在Python文件处理中混合使用readline和行迭代器是否安全?

问题描述

不,这不安全

使用预读缓冲区的结果是,将next()与其他文件方法(如readline())组合在一起无法正常工作。

您可以next()在此处跳过第一行。您还应该测试stopiteration,如果文件为空,则会引发。

with open('myfile.txt') as f:
    try:
        header = next(f)
    except stopiteration as e:
        print "File is empty"
    for line in f:
        # do stuff with line

解决方法

使用readline()和读取某些行是否安全for line in file,是否保证使用相同的文件位置?

通常,我想忽略第一行(标题),所以我这样做:

FI = open("myfile.txt")
FI.readline()             # disregard the first line
for line in FI:
    my_process(line)
FI.close()

这样安全吗,即可以保证迭代行时使用相同的文件位置变量?