python-3.x - 如何从 Pathlib glob ('**' 中排除隐藏目录)

标签 python-3.x glob

我使用 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达到相同的效果

最佳答案

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 等外部工具。

关于python-3.x - 如何从 Pathlib glob ('**' 中排除隐藏目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68250281/

相关文章:

python-3.x - `python3' : free(): invalid pointer 中的错误

list - 如何检查一个数字是否在列表中的另一个数字之前

python-3.x - keras中的三重损失,如何从合并向量中获取 anchor 、正向和负向

regex - 将 glob 转换为正则表达式或让 Perl 处理 glob 模式

python - 如何从Python中的特定路径调用文件的基本名称?

Python glob 多种文件类型

python - 在 Python 中减少路径名

python - 工作池数据结构

python - 如何运行子进程命令以在后台 Python 中启动 nodejs 服务器

python - pip install Pygame 后导入 Pygame 时出现 ModuleNotFoundError