在python文件处理中混合readline()和行迭代器是否安全?

hig*_*dth 18 python file-io

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

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

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

这是安全的,即,是否保证在迭代行时使用相同的文件位置变量?

Sim*_*ker 16

不,这不安全:

由于使用预读缓冲区,将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
Run Code Online (Sandbox Code Playgroud)

  • 因为`.next`在py3k中消失了. (4认同)