Issue
This Content is from Stack Overflow. Question asked by u.b
What is the simplest way to combine multiple txt files into one merged file, where each file contains different number of columns and I need to get one merged file with all the columns as follows:
file1.txt
1.04
2.26
3.87
file2.txt
5.44 4.65 9.86
8.67 5.89 7.45
8.41 6.54 6.21
file3.txt
6.98 6.52
4.45 8.74
0.58 4.12
merged.txt
1.04 5.44 4.65 9.86 6.98 6.52
2.26 8.67 5.89 7.45 4.45 8.74
3.87 8.41 6.54 6.21 0.58 4.12
I saw here answer to the case of one columns in each file.
how can i do this for multiple columns?
Solution
here’s a quick-and-dirty solution. I assumed that all files have the exact number of rows. The function write_files
gets an input files
which is a list of file-paths (strings).
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"])
This Question was asked in StackOverflow by Cashoo and Answered by noamgot It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.