Python中glob模块的使用

本篇文章介绍Python中的glob模块的基本使用。glob模块可以按指定路径得到所有符合条件的文件的完整路径。
glob的使用体验类似于windows系统中常用的搜索功能。使用通配符进行搜索

简介

glob是Python中最简单的模块之一,功能很简单,类似于windows中的查找文件。使用如下通配符进行操作:

  • * 星号:表示匹配0个或多个字符
  • ? 问号:表示匹配单个字符
  • [] 中括号: 匹配指定的范围。如[0-9]

glob.glob

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
>>> import glob
>>> files_path = glob.glob("/tmp/npm*")
>>> type(file_paths)
<type 'list'>
>>> for f in files_path:
... print f
...
/tmp/npm-7838-2b67e940
/tmp/npm-5331-1d55c699
/tmp/npm-6600-69f3511a
/tmp/npm-5116-69883a41
/tmp/npm-5009-8ef54da7
/tmp/npm-7792-fec6155a
/tmp/npm-3252-71dc8e8e
/tmp/npm-4344-50e90470
/tmp/npm-6387-29ec15b1
/tmp/npm-4617-fff22b70
/tmp/npm-4456-b90bb1d8
/tmp/npm-6480-cce3191b
/tmp/npm-4062-60f050ce
/tmp/npm-4712-1ca9017c
/tmp/npm-3770-aec98483
/tmp/npm-3913-8678ef60
/tmp/npm-5235-03941a1e

重点看类型! list !!! 返回的是一个列表

glob.iglob

iglob用来获取一个可迭代对象,再对其遍历。数据量非常大的时候比较适用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
>>> import glob
>>> files_path = glob.iglob("/tmp/npm*")
>>> type(files_path)
<type 'generator'>
>>> for f in files_path:
... print f
...
/tmp/npm-7838-2b67e940
/tmp/npm-5331-1d55c699
/tmp/npm-6600-69f3511a
/tmp/npm-5116-69883a41
/tmp/npm-5009-8ef54da7
/tmp/npm-7792-fec6155a
/tmp/npm-3252-71dc8e8e
/tmp/npm-4344-50e90470
/tmp/npm-6387-29ec15b1
/tmp/npm-4617-fff22b70
/tmp/npm-4456-b90bb1d8
/tmp/npm-6480-cce3191b
/tmp/npm-4062-60f050ce
/tmp/npm-4712-1ca9017c
/tmp/npm-3770-aec98483
/tmp/npm-3913-8678ef60
/tmp/npm-5235-03941a1e

上面的实例可以看出使用glob.iglob返回的是一个可迭代对象,可以节省内存。