.readlines()不应该返回数组吗?

时间:2016-10-13 13:29:58

标签: python readlines

我对.readlines()有疑问。 它过去只返回指定的行,即如果我运行

f1 = open('C:\file.txt','r')
filedata = f1.readlines(2)
f1.close()
print filedata

它应该打印第二行 file.txt。 但是现在当我运行相同的代码时,它会返回数组中文件的全部内容,文件中的每一行都作为数组中的单独对象。我正在使用相同的PC并运行相同版本的python (2.7).

有没有人知道解决这个问题的方法?

2 个答案:

答案 0 :(得分:3)

不要使用readlines;它将整个文件读入内存,然后选择所需的行。相反,只需阅读第一行n行,然后中断。

n = 2
with open('C:\file.txt','r') as f1:
    for i, filedata in enumerate(f1, 1):
        if i == n:
            break
print filedata.strip()

itertools documentation还提供了消耗序列的第一个 n 项的方法:

def consume(iterator, n):
    "Advance the iterator n-steps ahead. If n is none, consume entirely."
    # Use functions that consume iterators at C speed.
    if n is None:
        # feed the entire iterator into a zero-length deque
        collections.deque(iterator, maxlen=0)
    else:
        # advance to the empty slice starting at position n
        next(islice(iterator, n, n), None)

您可以这样使用它:

n = 2
with open('C:\file.txt','r') as f1:
    consume(f1, n-1)
    filedata = next(f1)
print filedata.strip()

答案 1 :(得分:2)

改变这个:

f1.readlines(2)

对此:

f1.readlines()[2]