文件i / o问题

时间:2011-05-18 10:54:08

标签: python file-io

我遇到一个非常简单的问题。我正在尝试删除文件中的换行符并将输出发送到新文件。这是我的代码:

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时遇到了麻烦。请提前感谢您的帮助。

3 个答案:

答案 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