【问题标题】:Search multiple patterns using glob only once仅使用 glob 搜索多个模式一次
【发布时间】:2021-08-27 08:02:04
【问题描述】:

我想使用glob 函数来查找位于对应于两种不同类型文件夹名称的文件夹中的文件。

我找到的解决方案很简单:

import glob
files1 = glob.glob('*type1*/*')
files2 = glob.glob('*type2*/*')
files = files1 + files2

有没有办法只用一个 glob 重写它?如果是,会更快吗?

类似

files = glob.glob('*[type1, type2]*/*') 

【问题讨论】:

    标签: python glob


    【解决方案1】:

    glob 理解 shell 风格的路径通配,所以你可以简单地这样做:

    files1 = glob.glob('*type[12]*/*')
    

    或者如果您需要扩展到更多数字,类似这样(从 1 到 6):

    files1 = glob.glob('*type[1-6]*/*')
    

    只调用一次glob()会更快,因为glob()必须多次读取当前目录和当前目录的每个子目录(在Unix系统上,这是readdir()函数)和这些将在每次调用glob() 时重复。目录内容可能会被操作系统缓存,因此不必从磁盘读取,但仍需要重复调​​用,glob() 必须将所有文件名与 glob 模式进行比较。

    也就是说,实际上,除非您有数千个文件和子目录,否则性能差异可能不会很明显。

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2018-08-25
      • 2012-04-03
      • 2013-02-13
      • 1970-01-01
      • 2021-08-22
      相关资源
      最近更新 更多