代码之家  ›  专栏  ›  技术社区  ›  Cam

使用通配符递归全局化,而不添加额外的目录级别

  •  1
  • Cam  · 技术社区  · 5 年前

    list_of_files = glob.glob(globable_file_path, recursive=True)
    

    现在我给它提供了一个全局文件路径列表。当格式化为这样时,它可以工作

    \?\Z:\level_1\level_2\**\*12345*.pdf
    

    \?\Z:\level_1\level_2\**12345*.pdf
    \?\Z:\level_1\level_2\[**]12345*.pdf
    \?\Z:\level_1\level_2\**[12345]*.pdf
    

    但这些都不管用。如何避免使用通配符递归地添加额外级别的目录而不是全局?

    文档显示了这一点

    >>> glob.glob('**/*.txt', recursive=True)
    ['2.txt', 'sub/3.txt']
    >>> glob.glob('./**/', recursive=True)
    ['./', './sub/']
    

    这表明您需要额外的\进行递归搜索。有没有办法用pathlib或操作系统来实现这一点。路径还是我不知道的一些技巧?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Cam    5 年前

    因此,这可以使用pathlib

    from pathlib import Path
    
    for path in Path(globable_file_path).rglob("*" + str(log1) + "*.pdf"):
        list_of_files.append(path.__str__())
    

    __str__ 要从中转换的方法 WindowsPath 到字符串。