首页 > 解决方案 > 如何查找与当前文件具有匹配模式的文件并合并?

问题描述

我有一个文件目录,其中包含一天记录的多个文件。但是我需要组合以相同 id 结尾的文件,因此我尝试使用的逻辑是遍历目录中的每个文件,然后查找具有匹配 id 的文件。例如,我有如下存储的文件:

a_1234_d.csv
b_1234_d.csv
c_1234_d.csv
a_1256_d.csv
b_1256_d.csv
c_1256_d.csv

这些文件不一定按上面的顺序存储,所以我需要归档与中间的 id 匹配的文件并将它们组合起来。到目前为止,我已经尝试了下面的代码,但我需要帮助来纠正模式匹配部分,因为这对于数百个文件来不断更改每个 id 是不切实际的。

f = os.listdir(dat_folder)

for file in f:
    if fnmatch.fnmatch(file, '*1234.csv'):
        print(file)

标签: pythonpython-3.x

解决方案


我稍微修改了 LordDot 的代码:

import re                                                                                                                                                     

f = ["a_1234_d.csv", "b_1234_d.csv", "c_1234_d.csv", "a_1256_d.csv", "b_1256_d.csv", "c_1256_d.csv"]

file_to_compose = {}
for file in f:
    lead, id_of_file, tail = re.split(r'[_]', file)
    if id_of_file in file_to_compose:
        file_to_compose[id_of_file].append(file)
    else:
        file_to_compose[id_of_file] = [file]

for (k, v) in file_to_compose.items():
    print (f'id {k} contains files: {", ".join(v)}')

输出:

id 1234 contains files: a_1234_d.csv, b_1234_d.csv, c_1234_d.csv 
id 1256 contains files: a_1256_d.csv, b_1256_d.csv, c_1256_d.csv

您可以轻松组合属于同一 id 的所有文件。


推荐阅读