使用write()方法合并两个文本文件时删除行

时间:2019-05-04 23:14:50

标签: python

我从related_files开始,这是两个CSV文件的路径的列表。然后,我尝试使用以下代码块创建路径为output_filename的文件。

new_file = open(output_filename, 'w+')
for x in relevant_files:
    for line in open(x):
        new_file.write(line)

代码看起来很合理,但是我完全随机决定在合并之前和之后检查长度。 file_1的长度为6,740,108,file_2的长度为4,938,459。总计11,678,567。但是,新文件的长度为11678550,比两个源文件的总长度短17行。然后,我手动检查了CSV文件-实际上,正是第二个文本文件(即related_files中的第二个条目)的最后17行被删除了。

出了什么问题?是否有最大文件长度?

1 个答案:

答案 0 :(得分:1)

我不确定您的脚本到底出了什么问题,但是在使用python中的文件时最好使用with语句。一旦您打开文件,他们便无需关闭文件,似乎您在这里还没有完成。

with open(output_file, 'w+') as f:
    lines = []
    for file in relevant_files:
        for line in open(file, 'r').read().split('\n'):
            lines.append(line)
    f.write('\n'.join(lines))

这就是我用来完成任务的方式。