迭代文件两次:了解 Python 的文件迭代机制
在 Python 中,迭代文件涉及使用循环逐行读取构造。然而,尝试第二次迭代同一个文件通常会产生意想不到的结果:没有输出。
此行为是由于 Python 中的底层文件迭代机制造成的。当您执行第一个循环时:
for line in f.readlines(): print(line)
文件将被读取到末尾。这类似于从磁带播放器读取磁带的末尾。一旦到达末尾,就不再有数据可读取。
要再次迭代文件,必须将文件指针重置到开头。这可以通过两种方式实现:
1。使用 f.seek(0):
f.seek(0) for line in f.readlines(): print(line)
调用 f.seek(0) 将文件指针重新定位到文件的开头,以便您再次读取它。
2。关闭并重新打开文件:
f.close() f = open('baby1990.html', 'rU') for line in f.readlines(): print(line)
关闭并重新打开文件会自动将文件指针重置到开头。
替代方案:与 Block 一起使用:
with 语句提供了一种更方便、更安全的使用方式files:
with open('baby1990.html', 'rU') as f: for line in f: print(line)
在 with 块中,当块退出时,文件将自动关闭,无论异常或循环如何。这消除了手动文件处理的需要。
以上是为什么迭代 Python 文件两次会产生意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!