我遇到一个非常简单的问题。我正在尝试删除文件中的换行符并将输出发送到新文件。这是我的代码:
infile = open('seq.txt', mode='r', encoding='utf-8')
lines = infile.readlines()
for line in lines:
par = line.strip('\n')
outfile = open('seqpar.txt', mode='w', encoding='utf-8')
for line in lines:
outfile.write(par)
当我运行上面的代码时,outfile(seqpar.txt)的内容完全空白。我试图在线搜索I / O教程,但我似乎无法找到类似问题的任何解决方案。由于某种原因,我在理解文件I / O时遇到了麻烦。请提前感谢您的帮助。
答案 0 :(得分:3)
par = line.strip('\n')
这不存储在任何地方,因此每次line
读取都会覆盖之前的par
。输入文件中的最后一行可能是空白的,最后一行是写入输出文件的所有行,因此没有任何内容被写入输出 - 多次,lines
中的每一行。您需要将每个line.strip('\n')
追加到par
,而不是覆盖它。
答案 1 :(得分:3)
其他答案解释了您的代码有什么问题。这是一种更加pythonic的方式来做你想做的事情:
with open('seq.txt', mode='r', encoding='utf-8') as infile:
with open('seqpar.txt', mode='w', encoding='utf-8') as outfile:
for line in infile:
outfile.write(line.strip("\n"))
# Or alternatively -- more efficient, but perhaps less pythonic:
# outfile.write(infile.read().replace("\n", ""))
答案 2 :(得分:2)
你的代码的问题是你的第一个for
循环遍历文件中的每一行,将它放在变量par
中,每次都用下一行覆盖同一个变量。
循环完成后,par
将包含文件的最后一行,下一个for循环将文件的最后一行写入重复n
次的新文件,{{ 1}}是第一个文件中的行数。
以下是一种可行的方法:
n