您好在SO上找到了几个解决方案,但我遗漏了一些信息。
我想一次读4行,直到我点击EOF。我知道如何用其他语言来做,但Python 3中最好的方法是什么?
这就是我所拥有的,lines
始终是前4行,然后代码停止(我知道,因为理解只给了我all_lines
的前4个元素。我可以使用一些有点反击和休息等等,但这对我来说似乎相当便宜。
if os.path.isfile(myfile):
with open(myfile, 'r') as fo:
all_lines = fo.readlines()
for lines in all_lines[:4]:
print(lines)
我想一次处理4行直到我点击EOF。我正在使用的文件相当短,可能大约100行MAX
答案 0 :(得分:1)
如果你想以4块为单位迭代这些行,你可以这样做:
if os.path.isfile(myfile):
with open(myfile, 'r') as fo:
all_lines = fo.readlines()
for i in range(0, len(all_lines), 4):
print(all_lines[i:i+4])
答案 1 :(得分:0)
您可以一次只读取四个,而不是读取整个文件然后循环四行。考虑
def fun(myfile):
if not os.path.isfile(myfile):
return
with open(myfile, 'r') as fo:
while True:
for line in (fo.readline() for _ in range(4)):
if not line:
return
print(line)
这里,生成器表达式用于读取四行,这些行嵌入在"无限"循环,当line
是假的时候停止(空str
''
),这只有在我们达到EOF时才会发生。