将多个文本文件合并为一个文本文件?

时间:2018-03-25 08:47:33

标签: python python-3.x for-loop

我试图将多个文件组合成一个文件,其中每个文件都包含一列,我需要获得一个包含两列的文件,并将结果文件绘制为(x,y),如下所示:

x       y       result
1       4       1   4
2       5       2   5
3       6       3   6

并运行n文本文件的代码。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这是一个快速而肮脏的解决方案。我假设所有文件都有确切的行数。函数write_files获得一个输入files,它是文件路径(字符串)的列表。

def write_files(files):
    opened_files = []
    for f in files:
        opened_files.append(open(f, "r"))

    output_file = open("output.txt", "w")
    num_lines = sum(1 for line in opened_files[0])
    opened_files[0].seek(0,0)
    for i in range(num_lines):
        line = [of.readline().rstrip() for of in opened_files]
        line = " ".join(line)
        line += "\n"
        output_file.write(line)
    for of in opened_files:
        of.close()
    output_file.close()

write_files(["1.txt", "2.txt"])

答案 1 :(得分:0)

一个简单的解决方案,假设所有文件都具有浮点格式的相同数量的元素。

import numpy as np
filename_list=['file0.txt', 'file1.txt']#and so on
columns = []
for filename in filename_list:
    f=open(filename)
    x = np.array([float(raw) for raw in f.readlines()])
    columns.append(x)
columns = np.vstack(columns).T
np.savetxt('filename_out.txt', columns)

另请参阅方法savetxt以自定义输出

编辑: 如果您在某个目录中有100个文件(让我们称之为files_dir),您可以使用listdir库中的os方法,请注意,{{1返回目录和文件:

listdir