微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中glob的基本问题

如何解决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兼容)

解决方法

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

您有两个选择:

  • 使用 os.walk(不过,您可能需要更改代码的结构)
  • 使用 PyPI https://pypi.org/project/pathlib2/ 中向后移植的 pathlib2 模块 - 该模块应包含支持使用 glob 通配符进行递归搜索的 ** 函数。
,

在字符串中使用反斜杠时要小心。在 Python 中,这意味着转义字符。尝试在您的字符串前面加上 r,如下所示:

for filename in glob.glob(r'C:\Users\My username\Documents\DATA\*'):
    # Do you business

编辑:
正如@poomerang 指出的那样,之前已经提供了一个更简短的答案,即“r”在 Python here

中的作用

Python 字符串文字的官方文档:Python 2.7Python 3.8

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。