Python 将旧文件中已有换行的行打印到同一行的新文件中

Python 将旧文件中已有换行的行打印到同一行的新文件中,python,Python,我希望新行在3个句子之间只打印一次。但是通过下面的code,在新索引句子之前,每个句子都打印了换行符,并额外添加了一个换行符 with open(convert_file) as infile: for line in infile: with open('convert-profile.txt', "a") as f1: if "index" in line: f1.write("\n"+line) elif "scan star

我希望
新行
在3个句子之间只打印一次。但是通过下面的
code
,在新
索引
句子之前,每个句子都打印了
换行符
,并额外添加了一个
换行符

with open(convert_file) as infile:
for line in infile:
    with open('convert-profile.txt', "a") as f1:
        if "index" in line:
            f1.write("\n"+line)
        elif "scan start time" in line:
            f1.write(line)  
        elif "binary: [4]" in line:
            f1.write(line)
        f1.close
我猜是因为旧文件中的每个
索引
扫描时间
,以及
二进制文件
都以
换行符
结尾。 如何将这三个文件追加到同一
行中
,并将它们写入新文件中



这里还有一件事,当我使用
“w”
模式进行
打印时,它似乎一直在第一行打印。最后,我得到了一个空白文件。如果每次运行
code
时,当
“w”
不起作用时,我希望它在文件上重新写入,我应该使用什么模式?

我建议您首先为要写入的行构建一个
字符串,然后写入整行。如果要删除换行符
字符
,则应使用
line.rstrip()
,如下所示:

    line = line.rstrip()
    result = ''
    if "index" in line:
        result += line
    elif "scan start time" in line:
        result += line
    elif "binary: [4]" in line:
        result += line
    result += '\n'

对于模式,
将open('convert-profile.txt',w')作为f1:
应该可以正常工作。

f1.close
不起任何作用。幸运的是,上下文管理器关闭了文件。。。如果您以
w
模式在循环中打开同一个文件,那么您只能得到上一次迭代的结果。。。不清楚。你能告诉我们你期望什么和得到什么吗?关于
w
,这里是错误的,因为我把
和open…
放在for循环后面。我换了线把它修好了。