python - python中glob的基本问题
问题描述
我真的不熟悉python,所以如果我很愚蠢,请原谅我的问题。
我正在尝试一个对文件夹中所有文件进行操作的简单脚本。但是,我显然只能递归访问该文件夹!
我解释。我有一个文件夹 DATA,其中包含每天的子文件夹(格式为 YYYY-MM-DD)。
如果我尝试
for filename in glob.glob('C:\Users\My username\Documents\DATA\2021-01-20\*'):
print filename
我没有输出。
但是,如果我尝试改为
for filename in glob.glob('C:\Users\My username\Documents\DATA\*\*'):
print filename
输出是预期的:
C:\Users\My username\Documents\DATA\2021-01-20\210120_HOPG_sputteredTip0001.sxm
C:\Users\My username\Documents\DATA\2021-01-20\210120_HOPG_sputteredTip0002.sxm
...
我什至尝试了不同的文件夹名称(删除破折号,在开头使用字母,仅使用字母,使用较短的文件夹名称)但结果仍然相同。
我错过了什么?
(顺便说一句:我在 python 2.7 上,这是因为我需要的数据程序只与 python 2 兼容)
解决方案
glob
在 Python 2.7 中无法进行递归文件搜索。即在文件夹、其子文件夹、子子文件夹等中搜索文件。
你有两个选择:
- 使用
os.walk
(但是您可能需要更改代码的结构) - 使用
pathlib2
来自 PyPI https://pypi.org/project/pathlib2/的反向移植模块——它应该包括一个glob
支持使用**
通配符进行递归搜索的函数。
推荐阅读
- angular - 有没有办法将组件实例与角度的许多选择器相关联?
- javascript - 搜索栏仅适用于第一个字符
- python - 检查字符串是否包含元音的函数
- javascript - 通过 Reactjs 以 Json 格式发布请求
- ios - 通过滑动删除行在tableview中不起作用
- angular - 无法将第二个数组绑定到 angular-dual-listbox
- wpf - 在 Elmish.WFP 中,如何为 DataGrid 创建索引绑定?(绑定到列表元素)
- delphi - 如何检测用户是否从另一个虚拟树视图中拖动节点?
- .net - IIS 强制 SSL 重定向不会重定向根流量
- c - 将十六进制类型转换为字符而不更改 C 中的值