我正在使用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.txt
是here,这应该是微不足道的。
是否意味着文件对象fh
在使用一次后会过期?我阅读了文档但没有得到它。
答案 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)