我知道逐行迭代一个文件,我可以使用这样的构造:
for line in file:
do stuff
Run Code Online (Sandbox Code Playgroud)
但是,如果我在for中的某个地方也有一个break语句,一旦我不在for块中,我该如何判断是否是让我退出for for构造的中断OR它是因为我命中了文件的末尾已经?
我尝试了如何找出文件是否在其`eof`的建议?:
f.tell() == os.fstat(f.fileno()).st_size
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于我的Windows机器.基本上,f.tell()总是返回文件的大小.
dm0*_*514 15
你可以用 for..else
for line in f:
if bar(line):
break
else:
# will only be called if for loop terminates (all lines read)
baz()
Run Code Online (Sandbox Code Playgroud)
else套件在for之后执行,但前提是for for normal(不是中断).