【问题标题】:How to exclude hidden directories from Pathlib glob('**')如何从 Pathlib glob('**') 中排除隐藏目录
【发布时间】:2021-07-05 02:54:14
【问题描述】:

我使用 python pathlib Path.glob('**') 递归获取主目录和所有子目录。但我不想要隐藏目录。我的代码是这样的

from pathlib import Path

p = Path(a_path)
p.glob('**')

我想要的可以像这样从glob实现

glob.glob(os.path.join(a_path,'**/'), recursive=True)

但我很好奇如何用pathlib达到同样的效果

【问题讨论】:

    标签: python-3.x glob


    【解决方案1】:

    globpathlib 版本不会过滤隐藏文件和目录,因此您必须自己检查它们。由于它返回所有条目,因此您必须分别检查每个部分(路径组件):

    [path for path in p.glob('**') if not any(part.startswith('.') for part in path.parts)]
    

    这有几个问题:对于大型隐藏目录来说效率很低,因为你不能一次删除它们,你必须过滤掉它们的每个子文件夹。如果您的起始文件夹的任何部分被隐藏,它也将不起作用,除非您在 if 检查中将其切断。

    另一种方法是使用 os.walk(),它允许您在下降发生时修改下降,如 this answer 中所述。

    这一切都假设您使用 *nix,其中隐藏状态通过在名称前面添加一个点来指示。在 Windows 上,您可能不得不求助于 attrib 等外部工具。

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多