我对.readlines()
有疑问。
它过去只返回指定的行,即如果我运行
f1 = open('C:\file.txt','r')
filedata = f1.readlines(2)
f1.close()
print filedata
它应该打印第二行 file.txt。
但是现在当我运行相同的代码时,它会返回数组中文件的全部内容,文件中的每一行都作为数组中的单独对象。我正在使用相同的PC并运行相同版本的python (2.7).
有没有人知道解决这个问题的方法?
答案 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]