文件对象(f = open(filename))使用一次后到期?

时间:2016-02-20 08:31:12

标签: python python-3.x file-io

我正在使用Python 3进行一些I / O并注意到这一点:

fname = 'mbox.txt'
fh = open(fname)

sum( 1 for line in fh) # count lines
# Out[49]: 132045
sum( 1 for line in fh)
# Out[50]: 0

mbox.txthere,这应该是微不足道的。

是否意味着文件对象fh在使用一次后会过期?我阅读了文档但没有得到它。

1 个答案:

答案 0 :(得分:4)

如果迭代文件对象,则提前当前文件位置。一旦到达文件末尾,读取文件将返回空字符串。

要重置文件位置,您可以使用seek method

sum( 1 for line in fh)
fh.seek(0)  # Move file position/pointer to the beginning (0).
sum( 1 for line in fh)