我有以下代码
os.chdir("X:\data1")
for file in glob.glob("*.pdf"):
查找.pdf
目录中的所有X:\data1\
文件
我还想在.txt
目录中找到所有的Y:\data2\
文件。
我在源代码中的多个地方都有这个片段,所以我只想做一点改动。
发布于 2020-05-13 14:40:11
像这样的东西会起作用吗?
import os
import glob
def ignore_case(pattern):
return ''.join((f'[{c.lower()}{c.upper()}]' if c.isalpha() else c for c in pattern))
def multi_glob(patterns):
for path, pattern in patterns:
yield from glob.iglob(os.path.join(path, ignore_case(pattern)))
list(multi_glob((("X:\data1", "*.pdf"), ("Y:\data2", "*.txt"))))
本质上,您可以只做os.chdir(path); glob.glob(pattern)
而不是glob.glob(os.path.join(path, pattern))
。如果您希望在多个路径/模式组合中发生这种情况,则只需对它们进行循环即可。最后,要获得不区分大小写的模式,只需将模式的每个字母c
替换为[cC]
。
https://stackoverflow.com/questions/61777087
复制相似问题