我有多个文件夹,每个文件夹中都有一个文本文件(input.txt
)。首先,我从f_names.txt
中读取文件夹名称,然后进入每个文件夹,并从每个文件夹中的input.txt
中读取第三列。该代码可以正常工作,直到此处。问题在于代码将输出文件(combine.txt
)中一行的所有第三列合并。而我想将每第三列作为新列写入输出文件(combine.txt
)。我该怎么办?
这是我的代码:
#!/usr/bin/python
import os
import re
path=os.getcwd()
try:
os.remove("combine.txt")
except OSError:
pass
with open('combine.txt', mode='a') as outfile:
with open('f_names.txt', 'r') as read_f:
for line in read_f:
os.chdir(line.strip())
with open('input.txt', 'r') as f:
data=[]
for line in f:
row = line.split()
data.append(float(row[2]))
outfile.write("%.2f\n" % float(row[2]))
os.chdir("..")
获得的输出(用于两个输入文件):
2.12
3.15
4.18
8.45
2.10
0.12
0.18
0.32
0.21
0.13
所需的输出(用于两个输入文件):
2.12 0.12
3.15 0.18
4.18 0.32
8.45 0.21
2.10 0.13
答案 0 :(得分:2)
您可以采取一些措施来使程序正确并“具有更多的Python风格”。
with open('f_names.txt') as read_f:
# Collect the third columns in a list
data = []
for line in read_f:
# No need to chdir()
with open('{}/input.txt'.format(line.strip())) as f:
# This is one column
data.append([float(line.split()[2]) for line in f])
# Do not remove the old file, overwrite it
with open('combine.txt', 'w') as outfile:
# "Transpose" the list of columns into a list of rows
# Write each row
for row in zip(*data):
# Use new-style formatting
outfile.write(" ".join("{:.2f}".format(cell) for cell in row) + "\n")