1 python中的glob

官方文档地址:https://docs.python.org/3/library/glob.html

python中的glob模块按类Unix Shell的查找规则和匹配模式查找所有匹配的路径名。

该glob模块包含三个函数glob.globglob.iglob、glob.escape。

1.1 glob模块的函数

1.1.1 glob.glob

函数形式

glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False)

函数参数

  • pathname:需要查找的路径。该路径既可以是绝对的,如/usr/src/Python-1.5/Makefile,也可以是相对的,如../../Tools//.gif,并且可以使用三个匹配符*?[]。其中*表示匹配任意字符串,?表示匹配任意单个字符,[]表示匹配指定范围内的字符串,如[0-9]表示匹配0到9范围内的单个数字,这三个匹配符和正则表达式中的含义相同。
  • root_dir:指定用于搜索的根目录。
  • recursive:表示将递归搜索子目录下的路径。

函数返回值

返回与pathname匹配的路径名列表。

1.1.2 glob.iglob

函数形式

glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False)

函数参数

  • pathname:需要查找的路径。该路径既可以是绝对的,如/usr/src/Python-1.5/Makefile,也可以是相对的,如../../Tools//.gif,并且可以使用三个匹配符*?[]。其中*表示匹配任意字符串,?表示匹配任意单个字符,[]表示匹配指定范围内的字符串,如[0-9]表示匹配0到9范围内的单个数字,这三个匹配符和正则表达式中的含义相同。
  • root_dir:指定用于搜索的根目录。
  • recursive:表示将递归搜索子目录下的路径。

函数返回值

返回与pathname匹配的路径名的迭代器

1.1.3 glob.escape

函数形式

glob.escape(pathname)

函数参数

  • pathname:需要转义的路径。转义所有特殊字符。

1.2 glob模块函数的简单使用

1.1.1 获取指定目录下的指定类型文件路径

(1) 获取某个目录下所有的png图片文件路径

# -*- coding: utf-8 -*-
import glob

if __name__ == '__main__':
    image_list = glob.glob(r'H:\*.png')
    print(image_list)

(2) 获取某个目录下所有文件后缀为tgz的文件路径

# -*- coding: utf-8 -*-
import glob

if __name__ == '__main__':
    video_list = glob.glob(r'H:\human3.6m\*.tgz')
    print(video_list)

输出:

['H:\\human3.6m\\Poses_D2_Positions_S1.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S11.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S5.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S6.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S7.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S8.tgz', 'H:\\human3.6m\\Poses_D2_Positions_S9.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S1.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S11.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S5.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S6.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S7.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S8.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_S9.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S1.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S11.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S5.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S6.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S7.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S8.tgz', 'H:\\human3.6m\\Poses_D3_Positions_mono_universal_S9.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S1.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S11.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S5.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S6.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S7.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S8.tgz', 'H:\\human3.6m\\Poses_D3_Positions_S9.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S1.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S11.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S5.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S6.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S7.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S8.tgz', 'H:\\human3.6m\\Segments_mat_gt_bs_S9.tgz', 'H:\\human3.6m\\TOF_S1.tgz', 'H:\\human3.6m\\TOF_S11.tgz', 'H:\\human3.6m\\TOF_S6.tgz', 'H:\\human3.6m\\Videos_S1.tgz', 'H:\\human3.6m\\Videos_S11.tgz', 'H:\\human3.6m\\Videos_S5.tgz', 'H:\\human3.6m\\Videos_S6.tgz', 'H:\\human3.6m\\Videos_S7.tgz', 'H:\\human3.6m\\Videos_S8.tgz', 'H:\\human3.6m\\Videos_S9.tgz']

1.1.2 获取指定目录下的所有文件路径

# -*- coding: utf-8 -*-
import glob

if __name__ == '__main__':
    file_list = glob.glob(r'H:\*')
    print(file_list)

1.1.3 获取当前目录下的某个子目录的文件

import glob
print(glob.glob("*/*/helloworld.txt"))

输出

['mydata\\txt\\helloworld.txt']

1.1.4 glob.iglob的使用

# -*- coding: utf-8 -*-
import glob

if __name__ == '__main__':
    for val in glob.iglob(r'H:\human3.6m\*.tgz'):
        print(val)

输出

H:\human3.6m\Poses_D2_Positions_S1.tgz
H:\human3.6m\Poses_D2_Positions_S11.tgz
H:\human3.6m\Poses_D2_Positions_S5.tgz
H:\human3.6m\Poses_D2_Positions_S6.tgz
H:\human3.6m\Poses_D2_Positions_S7.tgz
H:\human3.6m\Poses_D2_Positions_S8.tgz
H:\human3.6m\Poses_D2_Positions_S9.tgz
H:\human3.6m\Poses_D3_Positions_mono_S1.tgz
H:\human3.6m\Poses_D3_Positions_mono_S11.tgz
H:\human3.6m\Poses_D3_Positions_mono_S5.tgz
H:\human3.6m\Poses_D3_Positions_mono_S6.tgz
H:\human3.6m\Poses_D3_Positions_mono_S7.tgz
H:\human3.6m\Poses_D3_Positions_mono_S8.tgz
H:\human3.6m\Poses_D3_Positions_mono_S9.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S1.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S11.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S5.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S6.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S7.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S8.tgz
H:\human3.6m\Poses_D3_Positions_mono_universal_S9.tgz
H:\human3.6m\Poses_D3_Positions_S1.tgz
H:\human3.6m\Poses_D3_Positions_S11.tgz
H:\human3.6m\Poses_D3_Positions_S5.tgz
H:\human3.6m\Poses_D3_Positions_S6.tgz
H:\human3.6m\Poses_D3_Positions_S7.tgz
H:\human3.6m\Poses_D3_Positions_S8.tgz
H:\human3.6m\Poses_D3_Positions_S9.tgz
H:\human3.6m\Segments_mat_gt_bs_S1.tgz
H:\human3.6m\Segments_mat_gt_bs_S11.tgz
H:\human3.6m\Segments_mat_gt_bs_S5.tgz
H:\human3.6m\Segments_mat_gt_bs_S6.tgz
H:\human3.6m\Segments_mat_gt_bs_S7.tgz
H:\human3.6m\Segments_mat_gt_bs_S8.tgz
H:\human3.6m\Segments_mat_gt_bs_S9.tgz
H:\human3.6m\TOF_S1.tgz
H:\human3.6m\TOF_S11.tgz
H:\human3.6m\TOF_S6.tgz
H:\human3.6m\Videos_S1.tgz
H:\human3.6m\Videos_S11.tgz
H:\human3.6m\Videos_S5.tgz
H:\human3.6m\Videos_S6.tgz
H:\human3.6m\Videos_S7.tgz
H:\human3.6m\Videos_S8.tgz
H:\human3.6m\Videos_S9.tgz