我读了一个只包含一行的文件。但是,在循环结束之前,我不能停止读取文件。也就是说,python不会抛出EOFError异常。我的代码有什么问题吗?
for x in range(5):
try:
line = file.readlines()
except EOFError:
break
print "Line:",line输出为:
Line: ['nice\n']
Line: []
Line: []
Line: []
Line: []发布于 2012-03-01 16:42:39
readlines()读取整个文档并返回行列表,而不仅仅是一行。
您可能打算使用file.readline() -但即使这样也不会引发错误,所以您必须执行其他操作,比如检查if not line.endswith("\n"): break或len(line) < 1以检测EOF。
就我个人而言,我会写同样的功能,比如:
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"))发布于 2012-03-01 16:44:04
file.readlines()从不引发EOFError。
发布于 2012-03-01 16:44:36
从文档中可以看出,读取文件将在EOF处返回空字符串,而input()和raw_input()将在未读取任何数据的情况下到达EOF时返回EOFError
http://docs.python.org/library/exceptions.html#exceptions.EOFError
https://stackoverflow.com/questions/9513031
复制相似问题