如何解决Python:提供一个字符串,打开文件夹,其中包含文件夹名称中的字符串,然后打开/读取该文件夹中的文件
我有一个高度分支的文件夹结构,如下所示。我想匹配一个嵌套在其他描述符之间的条形码,并打开/读取该条形码文件夹中的相关文件。每个XXbarcodeXX文件夹的内容基本相同。
我尝试将but then
,with an argument that is resolved to *nothing* reports
和os.walk()
与glob.glob()
结合使用,但是没有一个产生正确的文件夹。和os.listdir()
刚刚返回了一个空列表,我认为这没有找到任何内容。
我没有让它最接近的bc似乎是自上而下遍历每个文件夹,而不是仅仅检查第二级中的文件夹名称。这花费了太长时间,因为第三和第四级中的某些文件夹具有数百个文件/文件夹。
fnmatch
解决方法
您正在使用的 *
正则表达式中的 re.match
可能会产生错误 (nothing to repeat at position 0
),因为它使用了一个没有任何前面标记的量词(零次或多次)。您可以尝试用 '..' + barcode + '..'
替换您的正则表达式。此正则表达式将在任意两个字符之间匹配您预期的 barcode
字符串(行终止符除外)。在命令 os.path.join
中,您可以在同一命令中加入所有路径名称和所需文件,以避免特定操作系统分隔符出现任何问题。
import os
import re
path='dirStructure'
barcode='barcode2'
for dirname,dirs,files in os.walk(path):
for folds in dirs:
if re.match('..' + barcode + '..',folds):
f = open(os.path.join(dirname,folds,'FileOfInterest.txt'),'r')
print(f.readlines())
f.close
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。