python - 如何查找与当前文件具有匹配模式的文件并合并?
问题描述
我有一个文件目录,其中包含一天记录的多个文件。但是我需要组合以相同 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)
解决方案
我稍微修改了 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 的所有文件。
推荐阅读
- sql - regexp_substr 字符串中的数字比率
- android - 在 Chrome OS 中的 Linux beta 上安装 .apk 时出错
- java - 以相同顺序重复数组 x 中的元素
- performance - OpenCL clCreateContextFromType 函数导致内存泄漏
- driver - 可签名性未通过 Windows 驱动程序测试
- python - 解开双循环内的递归以避免堆栈溢出
- css - 最大内容的 minmax() 不可能?
- julia - 如何在 Julia 中将向量(列表)广播到元组中?
- python-3.x - 创建并使用 WAV 文件作为对象 Python
- list - 实现自己的 Union 功能而无需两次遍历列表