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 相关文章推荐
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python numpy--数组的组合和分割实例
Feb 24 Python
利用python进行文件操作
Dec 04 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
python实现聊天小程序
2018/03/13 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
python列表生成器迭代器实例解析
2019/12/19 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
python序列类型种类详解
2020/02/26 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
追悼会上的答谢词
2014/01/10 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
公司考勤管理制度
2015/08/04 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
Python中requests做接口测试的方法
2021/05/30 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android