我读了一个只包含一行的文件。但是,在循环结束之前,我无法停止读取文件。即python不会抛出EOFError异常。我的代码有什么问题?
for x in range(5):
try:
line = file.readlines()
except EOFError:
break
print "Line:",line
输出结果为:
Line: ['nice\n']
Line: []
Line: []
Line: []
Line: []
答案 0 :(得分:6)
readlines()
读取整个文档并返回行列表,而不仅仅是一行。
您可能打算使用file.readline()
- 但即使这样也不会引发错误,因此您必须执行其他操作,例如检查if not line.endswith("\n"): break
或len(line) < 1
以检测EOF。< / p>
就个人而言,我会写相同的功能:
with open("filename") as f:
for i, line in enumerate(f):
print("Line: %s" % line)
if i > 5 or not line:
break
或者,如果您想要删除额外的换行符,请将print语句更改为:
print("Line: %s" % line.rstrip("\n"))
答案 1 :(得分:2)
file.readlines()
从不提出EOFError
。
答案 2 :(得分:1)
从文档中说,读取文件将在EOF返回空字符串,而input()和raw_input()将在达到EOF时返回EOFError而不读取任何数据
http://docs.python.org/library/exceptions.html#exceptions.EOFError