Python:为什么我的某个文本文件上的循环会读取空行,尽管该文件不为空? [重复]

问题描述 投票:1回答:1

我今天正在尝试学习和试验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)重置迭代器,以便能够使用上面代码中的几个循环中的内容。

python file python-3.x io
1个回答
0
投票

你试图两次遍历f的内容:

for line in f:

for linez in f:

......你不能这样做。第二个循环将立即退出,因为您已经读过所有行;没有人可以阅读。

如果要保存文件的行并多次循环它们,请使用以下内容:

all_lines = f.readlines()
© www.soinside.com 2019 - 2024. All rights reserved.