使用python将多个未排序的文本文件合并为一个已排序的文件

时间:2019-09-19 07:39:14

标签: python file sorting

我有一个文本文件名称列表,作为python中的变量。 我要创建另一个文本文件,其中包含列表中文件的所有行,并且希望该文件按行排序。

如何使用python以最有效的方式做到这一点?

这等效于我要在bash中执行的操作:

cat file1.txt file2.txt file3.txt | sort -h >> combined_and_sorted.txt

1 个答案:

答案 0 :(得分:0)

我创建了每个3行的简单文件。

我的解决方法是:

 with open("file 1.txt", 'r') as f1, open("file 2.txt", 'r') as f2,open("file 3.txt", 'r') as f3:
    with open("outfile.txt", 'w') as o:

       files    = [f1,'b',f2,'b',f3]

       for i in files:

           if i != 'b':
              lines = i.readlines()
           else:
              lines = '\n'

           o.writelines(lines)

说明:

所有要读取的文件都写在一个单句“ open(file_name,'r')”上。 “ r”代表阅读。

输出文件位于下一句'with open(“ outfile.txt”,'w')'

然后创建一个列表,其中包含文件的变量名和文件名之间的字母“ b”。因为格式问题,“ b”是故意放置的。

当“循环”找到文件(f1,f2,f3)时,它将获取文件行。否则,它将得到一个“ b”并添加一个换行符。

在该过程结束时,所有内容都将按照文件的顺序和文件中的行写入outfile.txt中,变量名称为'o'。

如果没有'b',则输出文件将如下所示:

file 1 line 1
file 1 line 2
file 1 line 3file 2 line 1
file 2 line 2
file 2 line 3file 3 line 1
file 3 line 2
file 3 line 3

使用我发布的代码,它的打印方式如下:

f  = open("outfile.txt",'r')
print(f.read())

file 1 line 1
file 1 line 2
file 1 line 3
file 2 line 1
file 2 line 2
file 2 line 3
file 3 line 1
file 3 line 2
file 3 line 3