Python – glob模块详解以及glob.glob、glob.iglob函数的使用
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – glob模块详解以及glob.glob、glob.iglob函数的使用
原文链接:https://www.stubbornhuang.com/2179/
发布于:2022年06月23日 9:13:13
修改于:2022年06月23日 9:13:13

1 python中的glob
官方文档地址:https://docs.python.org/3/library/glob.html
python中的glob模块按类Unix Shell的查找规则和匹配模式查找所有匹配的路径名。
该glob模块包含三个函数glob.glob、glob.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
当前分类随机文章推荐
- Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线 阅读1170次,点赞0次
- Python - Linux/Centos/Ubuntu查看CUDA/cuDNN版本号 阅读1938次,点赞0次
- Pytorch - 使用opencv-python解码视频文件并将视频帧转换为Pytorch tensor作为网络模型输入数据 阅读1397次,点赞0次
- Python - 字典dict遍历方法总结 阅读35次,点赞0次
- Python - 普通函数/lambda匿名函数/类成员函数作为回调函数的用法 阅读1434次,点赞0次
- Python - 不依赖第三方库对类对象进行json序列化与反序列化 阅读868次,点赞0次
- Python - list与字符串str相互转换方法总结 阅读28次,点赞0次
- Python - 使用with open as 读写文件 阅读973次,点赞0次
- Python - 配置Yolov5出现ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'错误 阅读418次,点赞0次
- Python - 解决opencv-python使用cv2.imread()读取中文路径图片失败的问题 阅读44次,点赞0次
全站随机文章推荐
- Python - 语音识别文本相似性度量库jiwer,可计算文字错误率WER、匹配错误率MER等相似性度量指标 阅读50次,点赞0次
- Python - BeautifulSoup的find()和findAll() 阅读2192次,点赞0次
- Duilib - 点击按钮弹出模态对话框 阅读854次,点赞0次
- Pytorch – 使用torch.matmul()替换torch.einsum('bhxyd,md->bhxym',(a,b))算子模式 阅读196次,点赞0次
- Google Adsense - 后台统计面板中CTR/CPC/RPM的含义 阅读1693次,点赞0次
- WordPress - wp_registration_url函数详解 阅读326次,点赞0次
- FFmpeg - 常用的视频像素格式以及使用SwsContext和sws_scale进行视频像素格式转换和视频缩放 阅读101次,点赞0次
- Pytorch - 使用torch.matmul()替换torch.einsum('nctw,cd->ndtw',(a,b))算子模式 阅读533次,点赞0次
- Unity - Color32[]转IntPtr 阅读1912次,点赞0次
- 资源分享 - 游戏物理引擎开发, Game Physics Engine Development 中文版PDF下载 阅读456次,点赞0次
评论
148