find_filegroups: 查找仅文件扩展名不同的文件
此函数用于在不同目录中查找属于同一组(即仅文件扩展名不同)的文件,并将它们收集到一个 Python 字典中,以便进行进一步处理。
from mlxtend.file_io import find_filegroups
概述
此函数根据文件名查找相互关联的文件。这对于解析存储在不同子目录中的文件集合非常有用,例如
input_dir/
task01.txt
task02.txt
...
log_dir/
task01.log
task02.log
...
output_dir/
task01.dat
task02.dat
...
参考
- -
示例 1 - 在字典中分组相关文件
给定以下目录和文件结构
dir_1/
file_1.log
file_2.log
file_3.log
dir_2/
file_1.csv
file_2.csv
file_3.csv
dir_3/
file_1.txt
file_2.txt
file_3.txt
我们可以使用 find_filegroups
将相关文件作为字典项进行分组,如下所示
from mlxtend.file_io import find_filegroups
find_filegroups(paths=['./data_find_filegroups/dir_1',
'./data_find_filegroups/dir_2',
'./data_find_filegroups/dir_3'],
substring='file_')
{'file_1': ['./data_find_filegroups/dir_1/file_1.log',
'./data_find_filegroups/dir_2/file_1.csv',
'./data_find_filegroups/dir_3/file_1.txt'],
'file_2': ['./data_find_filegroups/dir_1/file_2.log',
'./data_find_filegroups/dir_2/file_2.csv',
'./data_find_filegroups/dir_3/file_2.txt'],
'file_3': ['./data_find_filegroups/dir_1/file_3.log',
'./data_find_filegroups/dir_2/file_3.csv',
'./data_find_filegroups/dir_3/file_3.txt']}
API
find_filegroups(paths, substring='', extensions=None, validity_check=True, ignore_invisible=True, rstrip='', ignore_substring=None)
在 python 字典中查找并收集来自不同目录的文件。
参数
-
paths
:list
要搜索的目录路径。字典键是根据第一个目录构建的。
-
substring
:str
(默认: '')所有文件必须包含才能被考虑的子字符串。
-
extensions
:list
(默认: None)每个路径允许的文件扩展名,可以是
None
或list
。如果提供,扩展名的数量必须与paths
的数量匹配。 -
validity_check
:bool
(默认: True)如果为
True
,则检查所有字典值是否具有相同数量的文件路径。如果有效性检查失败,则打印警告并返回空字典。 -
ignore_invisible
:bool
(默认: True)如果为
True
,则忽略不可见文件(即以点开头的文件)。 -
rstrip
:str
(默认: '')如果提供,在分割扩展名后从文件基名的右侧剥离字符。对于将不同的文件名修剪到共同的词干非常有用。例如,如果 rstrip 设置为"_","abc_d.txt" 和 "abc_d_.csv" 将共享词干 "abc_d"。
-
ignore_substring
:str
(默认: None)忽略包含指定子字符串的文件。
返回
-
groups
:dict
文件路径的字典。键是
paths
中列出的第一个目录中找到的文件名(不包含文件扩展名)。
示例
有关用法示例,请参阅 https://mlxtend.cn/mlxtend/user_guide/file_io/find_filegroups/