Python标准库系列-glob

Python 3提供了一系列标准库,所提供的组件设计范围十分广泛。这个标准库包含了多个内置模块(以C编写),Python可以依靠这些标准库提供许多系统级功能,例如文件I/O,此外还有大量以Pyhon编写的模块,提供了许多日常编程中许多问题的标准解决方案。具体的列表可以点击Python标准库了解。

今天提供的就是glob这个标准库的使用说明

glob

glob可以根据Unix终端所用规则找出所有匹配特定模式的 路径名,但会按照不确定的顺序返回结果。波浪号扩展不会生效,但是*,?以及表示范围的[]会杯正确的匹配。

通配符

  • 通配符 *: 匹配一个文件名段中的0个或多个字符

  • 通配符 ?: 匹配一个文件名该位置的单个字符

  • 通配符 []: 匹配一个区间,比如[a-z]可以匹配多个字符中的一个字符。[0-9]则可以匹配数字字符

使用方法

glob.glob(pathname)

可以返回所有匹配文件的路径 列表。只有一个参数,用来定义文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。

In [13]: f = glob.glob('*.obj')                                                 

In [14]: f                                                                      
Out[14]: ['statu.obj', 'test.obj']

glob.iglob(pathname)

获取一个可遍历对象,放回所有匹配问文件路径的 生成器,可以在使用的时候再生成,对于大量的候选对象来说可以节省空间,但是每次需要的使用再寻找会浪费时候吗,同时对每个元素,使用之后就会释放空间,所以只能使用一次。

In [15]: f = glob.iglob('*.obj')                                                

In [16]: f                                                                      
Out[16]: <generator object _iglob at 0x7fafc28559e0>

In [17]: for x in f:
    ...:     print(x)
    ...:                                                                        
statu.obj
test.obj

使用场景

glob模块的很多方法和re类似,实际上,re模块在正则表达式的应用上比glob的功能强大的多。那么,我们什么时候使用glob呢?

事实上,在很多时候,我们需要处理的数据是大量分散在不同的文件里的。这可能是分布式处理的结果,也可能是数据预处理的时候为了方便查找做的分割。但是我们在处理的时候,需要将这些数据都整合起来,做成一个DataFrame。所以我们可以用glob的模块,就不同的数据文件批量化整合成在一起,用于下一步的处理。


Python标准库系列

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

Python标准库系列-argparse 下一篇