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