我想使用 glob
函数来查找位于与两种不同类型的文件夹名称相对应的文件夹中的文件。
我找到的解决方案很简单:
import glob
files1 = glob.glob('*type1*/*')
files2 = glob.glob('*type2*/*')
files = files1 + files2
有什么方法可以只使用一个 glob 来重写它吗?如果是的话,会更快吗?
类似于
files = glob.glob('*[type1, type2]*/*')
最佳答案
glob
理解 shell 样式的路径通配符,因此您可以简单地执行以下操作:
files1 = glob.glob('*type[12]*/*')
或者如果您需要扩展到更多数字,如下所示(1 到 6):
files1 = glob.glob('*type[1-6]*/*')
只调用一次 glob()
会更快,因为 glob()
必须多次读取当前目录和当前目录的每个子目录(在 Unix 系统上,这是 readdir()
函数)并且每次调用 glob()
时都会重复这些操作。目录内容可能被操作系统缓存,因此不必从磁盘读取,但仍然需要重复调用,并且 glob()
必须将所有文件名与全局模式。
也就是说,实际上,除非您有数千个文件和子目录,否则性能差异不太可能明显。
关于python - 仅使用一次 glob 搜索多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68949941/