首页 > 解决方案 > 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 兼容)

标签: pythonglob

解决方案


glob在 Python 2.7 中无法进行递归文件搜索。即在文件夹、其子文件夹、子子文件夹等中搜索文件。

你有两个选择:

  • 使用os.walk(但是您可能需要更改代码的结构)
  • 使用pathlib2来自 PyPI https://pypi.org/project/pathlib2/的反向移植模块——它应该包括一个glob支持使用**通配符进行递归搜索的函数。

推荐阅读