这个问题在这里已有答案:
我今天正在尝试学习和试验Python,我开始尝试打开一个文本文件,从中读取行,然后在第二个文本文件中写入这些行。之后,我尝试将两个文件中的行加载到列表中,并在控制台中打印这些列表。这是实验代码:
f = open('D:\\origFile.txt', 'r')
f2 = open('D:\\copyFile.txt', 'w')
for line in f:
f2.write(line.rstrip() + ' ')
f2.close()
s=""
for linez in f:
s += linez
print (s)
s2=""
f2 = open('D:\\copyFile.txt', 'r+')
reading = f2.readlines()
print (reading)
for linex in f2:
s2 += linex
print (linex)
list1=s.split()
list2=s2.split()
print(list1)
print(list2)
f.close()
f2.close()
只有当我删除或评论此部分时,代码才能正常工作:
f2 = open('D:\\copyFile.txt', 'w')
for line in f:
f2.write(line.rstrip() + ' ')
f2.close()
虽然在写完f2
的内容之后我已经关闭了f1
文件。那为什么它会影响代码中的其余文件操作呢?它如何影响f1
?如同,最终的列表既不是来自f1
也不是f2
的文本。
编辑1:在我的问题中,我已经尝试关闭第二个文件,认为这将是我的问题的原因,而不是循环本身;而另一个问题甚至没有一个循环来满足我的问题的答案。虽然答案有些相同,但另一个问题的答案并没有显示如何重复使用文件的内容而不必使用f.seek(0)
重置迭代器,以便能够使用上面代码中的几个循环中的内容。
你试图两次遍历f
的内容:
for line in f:
for linez in f:
......你不能这样做。第二个循环将立即退出,因为您已经读过所有行;没有人可以阅读。
如果要保存文件的行并多次循环它们,请使用以下内容:
all_lines = f.readlines()