python - Python - Glob 递归地挖掘目录
问题描述
我目前的目录结构如下:
/Users/user/dir/image.png
/Users/user/dir/sample.txt
/Users/user/dir/nested_dir/dir/dir/file.txt
/Users/user/dir/nested_dir1/dir2/dir3/file2.txt
我的目标是递归地挖掘每个目录,以获取我需要的特定文件。问题是我还想在执行递归搜索的同时捕获“image.png”以及任何其他不是目录的文件类型。
这是我目前拥有的:
for file in Path('/Users/user/dir').glob('**/'):
print(f'file:{file}')
然后,这会一直生成每个文件和文件夹,但是不显示不是目录的项目(image.py,sample.txt)。我也想捕捉这些以备后用。建议?
此外,我尝试了以下方法:
for file in Path('/Users/user/dir').glob('*/'):
这确实给了我我要求的项目,但是嵌套递归不起作用,只是给了我顶级目录。
解决方案
用作**/*
模式:
>>> from pprint import pprint as pp >>> import pathlib as pl >>> >>> >>> p = pl.Path(".") >>> >>> old_way = list(p.glob("**/")) # Your way >>> pp(old_way) [WindowsPath('.'), WindowsPath('dir0'), WindowsPath('dir1'), WindowsPath('dir1/dir10')] >>> >>> new_way = list(p.glob("**/*")) >>> pp(new_way) [WindowsPath('dir0'), WindowsPath('dir1'), WindowsPath('file0.txt'), WindowsPath('dir0/file00.txt'), WindowsPath('dir1/dir10'), WindowsPath('dir1/file10.txt')] >>> >>> newer_way = [p] + list(p.glob("**/*")) # Prepend globed dir >>> pp(newer_way) [WindowsPath('.'), WindowsPath('dir0'), WindowsPath('dir1'), WindowsPath('file0.txt'), WindowsPath('dir0/file00.txt'), WindowsPath('dir1/dir10'), WindowsPath('dir1/file10.txt')]
推荐阅读
- r - 在 R 中创建一个包含总计的双向表
- python - 导入错误:从 Python 包导入时出现问题
- git - 为什么将新的分支指针推送到 Git 远程会导致拉取请求?
- node.js - 在节点谷歌云功能上提示/强制垃圾收集的任何方式
- serverless-framework - Serverless,将 ElasticSearch 部署到 AWS,“创建 elasticsearch 域并不稳定”
- ios - 从核心数据传递值
- javascript - 将异步 getJSON 数据推送到来自 2 次数组调用
- sql - 将数据从 CSV 插入 SQL Server 表时,如何解决算术溢出错误?
- spring - java.lang.AssertionError:状态:404
- cadence-workflow - 当子工作流的输入大小很大时超时异常