我有一个大文本文件,它是2GB或更多。当然我不应该使用read()
。
我认为使用readline()
可能是一种方法,但我不知道如何在文件末尾停止循环。
我试过这个:
with open('test', 'r') as f:
while True:
try:
f.readline()
except:
break
但是当文件结束时,循环将不会停止并且将保持打印空字符串(''
)。
答案 0 :(得分:5)
文件结束被定义为readline
返回的空字符串。请注意,实际的空行(如readline
返回的每一行都以行分隔符结束。
with open('test', 'r') as f:
while True:
line = f.readline()
if line == "":
break
但是再一次,python中的文件对象已经可以迭代了。
with open('test', 'r') as f:
for line in f:
print(line.strip())
strip
删除空格,包括换行符,因此您不会打印双换行符。
如果您不喜欢它安全,并希望尽可能少的代码:
for l in open("text"): print(l.strip())
编辑:strip
从两边删除所有类型的空格。如果您实际上只想摆脱结束换行符,可以使用rstrip("\n")
答案 1 :(得分:0)
您可以使用for语句而不是while语句。你可以做点什么
for line in f.readlines()
print(line)
可能有帮助。