Python: glob匹配文件的操作


Posted in Python onDecember 11, 2020

glob模块实例详解

glob的应用场景是要寻找一系列(符合特定规则)文件名。

glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。查找文件只用到三个匹配符:”*”, “?”, “[]”。

”*”匹配0个或多个字符;

”?”匹配单个字符;

”[ ]”匹配指定范围内的字符,如:[0-9]匹配数字。

假设以下例子目录是这样的。

dir
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
dir/subdir/subfile.txt

匹配所有文件

可以用*匹配任意长度字节。glob.glob比较常用,返回一个list,也可用glob.iglob返回生成器。

import glob
for name in glob.glob('dir/*'):
  print name
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir

匹配子目录文件

可以指定子目录名称,也可以用通配符代替,不显示指定。

print 'Named explicitly:'
for name in glob.glob('dir/subdir/*'):
  print '\t', name

print 'Named with wildcard:'
for name in glob.glob('dir/*/*'):
  print '\t', name
Named explicitly:
  dir/subdir/subfile.txt
Named with wildcard:
  dir/subdir/subfile.txt

单字节通配符匹配

除了*以外,还有?匹配单个字符。比如下面这个例子,匹配以file开头,以.txt结尾,中间是任一字符的文件。

for name in glob.glob('dir/file?.txt'):

print name

dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt

字符区间匹配[0-9]

比如匹配后缀前是数字的文件。

for name in glob.glob('dir/*[0-9].*'):

print name

dir/file1.txt

dir/file2.txt

Ref:

官方文档

Python Module of the Week

补充知识:Python glob 递归遍历匹配文件;os.makedirs()递归创建目录

Glob递归遍历匹配文件

简约版

在python中,glob模块用来查找匹配文件

常用的匹配规则:

: 匹配所所有

? : 匹配一个字符

如果没有匹配的,glob.glob(path)将返回一个空的list:[]

from glob import glob
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
print(glob(file_path))

排序版

我喜欢偷懒,所以,Coding能解决的问题一般不会人工解决;

我喜欢整洁,所以,Coding苛求完美,结果奢求整齐划一。

import re
from glob import glob
def atoi(s):
 return int(s) if s.isdigit() else s
def natural_keys(text):
 return [atoi(c) for c in re.split('(\d+)', text)]
 
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
file_list = glob(file_path)
file_list.sort(key=natural_keys)
for name in file_list:
  print(name)

os.makedirs()递归创建目录

os.mkdir()创建指定的目录,但如果其上一级目录不存在,则无法创建成功。

os.makedirs()实现递归创建目录的功能。

以上这篇Python: glob匹配文件的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python实现中文转换url编码的方法
Jun 14 Python
python中装饰器级连的使用方法示例
Sep 29 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Django ORM 查询管理器源码解析
Aug 05 Python
python实现统计代码行数的小工具
Sep 19 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
Python3基于print打印带颜色字符串
Jul 06 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
Python tkinter实现日期选择器
Feb 22 Python
Python Socket多线程并发原理及实现
Dec 11 #Python
python 实现Harris角点检测算法
Dec 11 #Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 #Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 #Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 #Python
Python 用__new__方法实现单例的操作
Dec 11 #Python
python实现图像高斯金字塔的示例代码
Dec 11 #Python
You might like
php入门小知识
2008/03/24 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
5款非常棒的Python工具
2018/01/05 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
企业门卫岗位职责
2013/12/12 职场文书
关于赌博的检讨书
2014/01/24 职场文书
升学宴主持词
2014/04/02 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
廉政承诺书2015
2015/04/28 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
Android中的Launch Mode详情
2022/06/05 Java/Android