避免在Python中混合迭代和读取错误

时间:2015-04-26 19:35:49

标签: python io file-handling

我有这个用Python 2.7解析的文件

a
b

我用这种方式解析:

f = open("file.txt", "r")
for l in f:
  if l == "a\n":
    break
# this causes an error
print f.readline()

这导致:

ValueError: Mixing iteration and read methods would lose data

为什么Python会抛出此错误?我想读取一个文件,直到循环中满足条件,然后通过调用readline()读取结果。不知道为什么会出现错误,因为readline()调用超出了引用文件句柄的循环。

1 个答案:

答案 0 :(得分:2)

您可以通过显式调用next()从文件迭代器获取下一行。

with open("file.txt") as f:
    for l in f:
        if l == "a\n":
            break
    line_after_a = next(f)
    print line_after_a