循环遍历多个文件以根据其名称进行合并

时间:2018-03-27 14:04:23

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

我是一个新的python。我有循环功能给我一个文件夹包含100个文件“里面的数据是数字和原始的nuber是相同的”,如下所示:

.FullName

这些文件保存在名为output的文件夹中 我需要将输出文件夹中的两个文件合并为一个文件,如:

A_0.20_1_.txt        for example   A_0.20_1_    B_0.20_1_      
B_0.20_1_.txt                         1            4
A_0.20_2_.txt                         2            5
B_0.20_2_.txt                         3            6

A_0.40_1_.txt
B_0.40_1_.txt
A_0.40_2_.txt
B_0.40_2_.txt

and so on.....

我尝试使用以下代码:

merged_A_B_0.20_1_.txt       for example   merged_A_B_0.20_1_
merged_A_B_0.20_2_.txt                        1    4
                                              2    5
merged_A_B_0.40_1_.txt                        3    6
merged_A_B_0.40_2_.txt

and so on.....

但它不起作用并给我错误

filename_list = [f for f in os.listdir(r'C:\Users\output\')if os.path.isfile(f)] 
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) 

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的代码实际上正在运行问题是您没有通过os.path.isfile()的完整路径,因此它不会返回True并且您的文件列表为空

import numpy as np
import os
file_path = r"C:\Users\output"
filename_list = []
for file in os.listdir(file_path):
    file = os.path.join(file_path, file)
    if os.path.isfile(file):
        filename_list.append(file)

columns = []
for filename in filename_list:
    with open(filename, 'r') as f:
        x = np.array([float(raw) for raw in f.readlines()])
        columns.append(x)
columns = np.vstack(columns).T
np.savetxt('filename_out.txt', columns)

这会将所有文件的数据写入一个文件,每个文件只有一列