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发送email的3种方法
Apr 28 Python
如何用itertools解决无序排列组合的问题
May 18 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
python getpass实现密文实例详解
Sep 24 Python
python实现七段数码管和倒计时效果
Nov 23 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
numpy数据类型dtype转换实现
Apr 24 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
Jquery性能优化详解
2014/05/15 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python方向键控制上下左右代码
2018/01/20 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
django教程如何自学
2020/07/31 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
社区党员先进事迹
2014/01/22 职场文书
高级工程师英文求职信
2014/03/19 职场文书
小学一年级学生评语
2014/04/22 职场文书
2014年物流工作总结
2014/11/25 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
小学生教师节广播稿
2015/08/19 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
详解Django的MVT设计模式
2021/04/29 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL