python - 来自多个路径的 glob.glob
问题描述
我有以下代码
os.chdir("X:\data1")
for file in glob.glob("*.pdf"):
查找目录.pdf
中的所有文件X:\data1\
我还想找到目录.txt
中的所有文件Y:\data2\
我在源代码的多个地方都有这个片段,所以我只想做一点改变。
解决方案
这样的事情会做吗?
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]
.
推荐阅读
- javascript - event.latLng returns latitude and longitude, however, I can't extract just lat or lng
- android - 如何在 Kotlin 中将两个数组与参数数组合并为一个数组?
- csv - 使用 java.io.FileOutputStream 导出 .csv
- scala - 为什么 Scala Map 上的 .map.flatten 和 flatMap 返回不同的结果?
- azure - Azure Runbook to connect to SQL server running on Azure VM
- c# - Global Function in Asp.net
- ios - Status bar not sticking to top on Some iPads
- angular - @Input/@Output check in templates
- ios - How to Merge video with audio?
- javascript - Function run function