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
    ...

参考

  • -

给定以下目录和文件结构

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)

    每个路径允许的文件扩展名,可以是 Nonelist。如果提供,扩展名的数量必须与 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/