Python glob.md
glob
即使glob API非常简单, 但这个模块包含了很多的功能. 在很多情况下, 尤其是你的程序需要寻找出文件系统中, 文件名匹配特定模式的文件时, 是非常有用的. 如果你需要包含一个特定扩展名, 或前缀, 或含有任何普通字符串的文件列表, 可以直接使用glob代替手工编程扫描目录内容.
glob中模式规则不是正则表达式, 而是, 符合标准Uinx路径扩展规则. 但是Shell变量名和符号(~)是不被扩充的, 只有一些特殊的字符: 两个不同的通配符和字母范围被支持. 模块规则适合于文件名的片段(以/为分隔), 但模式中的路径可以是相对或者绝对路径.
Example Data
假设当前工作目录下包含有以下一些文件.
# tree .
.
└── dir
├── file1.txt
├── file2.txt
├── filea.txt
├── fileb.txt
├── file?.txt
├── file.txt
├── file[.txt
├── file*.txt
└── subdir
└── subfile.txt
2 directories, 9 files
Wildcards
glob.glob(pathname, *, recursive=False):返回一个与pathname匹配的路径组成的list,该list可能为空。 该参数必须为包含路径说明的字符串。pathname 可以为绝对路径 (like /usr/src/Python-1.5/Makefile) 或相对路径 (like ../../Tools/*/*.gif), 并且可以包含shell风格的通配符。损坏的符号链接将被包含在结果中 (类似于shell中)。如果 recursive 设置为真,“**” 将匹配所有存在的目录和子目录和任何文件。如果匹配式以 os.sep 结尾, 只对目录和子目录进行匹配。
举例
*匹配名字片段中的0个或多个字符, 例如, dir/* .
import glob
for name in sorted(glob.glob('dir/*')):
print(name)
该模式在目录中匹配每个路径名(文件或目录),而不需要进一步递归到子目录中。glob()返回的数据没有排序,因此这里的示例对它进行排序,以便更容易地研究结果。
# python glob_study.py
dir/file*.txt
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/file?.txt
dir/file[.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
要在子目录中列出文件,必须将子目录包含在模式中。
import glob
print('Named explicitly:')
for name in sorted(glob.glob('dir/subdir/*')):
print(' {}'.format(name))
print('Named with wildcard:')
for name in sorted(glob.glob('dir/*/*')):
print(' {}'.format(name))
上面显示的第一种情况显式列出子目录名称,而第二种情况则依赖通配符来查找目录。
Named explicitly:
dir/subdir/subfile.txt
Named with wildcard:
dir/subdir/subfile.txt
在这种情况下,结果是一样的。如果有另一个子目录,通配符将匹配两个子目录,并包含两个子目录中的文件名。
Single Character Wildcard
其他的被支持的通配符是问号(?). 它匹配在对应位置的任一单个字符. 例如:
import glob
for name in sorted(glob.glob('dir/file?.txt')):
print(name)
匹配所有以”file”开头, 之后包含一个任何字符并以”.txt”结尾的文件.
dir/file*.txt
dir/file1.txt
dir/file2.txt
dir/file?.txt
dir/file[.txt
dir/filea.txt
dir/fileb.txt
Character Ranges
使用一个字符范围(a-z)而不是一个问号来匹配几个字符中的一个。此示例在扩展名之前查找名称中具有数字的所有文件。
import glob
for name in sorted(glob.glob('dir/*[0-9].*')):
print(name)
字符范围[0-9]匹配任何单一数字. 这个范围是基于每个字符/数字的字符编码顺序, 破折号(-)表示一个范围, 上面的范围也可直接用[0123456789]来表示.
dir/file1.txt
dir/file2.txt
Escaping Meta-characters
glob.escape(pathname):转义所有的特殊字符('?','*'和'['])。如果您想匹配任意可能包含特殊字符的字符串,这将非常有用。驱动器/ UNC共享点中的特殊字符不会转义,例如在Windows系统上 escape('//?/c:/Quo vadis?.txt') 将返回 '//?/c:/Quo vadis[?].txt'。
举例
有时需要搜索包含特殊元字符的名称的文件,这些名称包含了其模式的特殊元字符。escape()函数构建了一个适当的模式,其中特殊字符“escaped”,因此它们不会被glob扩展或解释为特殊字符。
import glob
specials = '?*['
for char in specials:
pattern = 'dir/*' + glob.escape(char) + '.txt'
print('Searching for: {!r}'.format(pattern))
for name in sorted(glob.glob(pattern)):
print(name)
print()
每个特殊字符通过构建包含单个条目的字符范围来转义。
Searching for: 'dir/*[?].txt'
dir/file?.txt
Searching for: 'dir/*[*].txt'
dir/file*.txt
Searching for: 'dir/*[[].txt'
dir/file[.txt
Python glob.md的更多相关文章
- python glob 用通配符查找指定目录中的文件 - 开源中国社区
python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件
- python glob标准库基础学习
#glob文件名模式匹配#作用:使用unix shell规则查找与一个模式匹配文件名"""尽管glob api很小,但这个模块很强大,只要程序需要查找文件系统中名字与某种 ...
- python glob fnmatch 用于文件查找操作
參考: http://python.jobbole.com/81552/:Python模块学习:glob文件路径查找 http://blog.csdn.net/suiyunonghen/article ...
- python glob的安装和使用
基本概念 glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,类似于Windows下的文件搜索,支持通配符操作.*,?,[]这三个通配符,*代表0个或多个字符,?代表一 ...
- python 标准库 glob ,python glob 学习
glob库是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用 windows 下的文件搜索差不多.查找文件只用到三个匹配符: ”*”, 匹配 个或多个字符: “?”, ”?” ...
- Python os.md
os 便携式访问操作系统的特定功能.os模块提供了对特定平台模块(如posix, nt, mac)的封装, 函数提供的api在很多平台上都可以相同使用, 所以使用os模块会变得很方便. 但不是所有函数 ...
- Python shutil.md
shutil shutil模块包括高级文件操作,例如复制和归档. Copying Files shutil.copyfileobj(fsrc, fdst[, length]):将类似文件的对象fsrc ...
- Python glob使用
http://www.cnblogs.com/lovemo1314/archive/2011/04/26/2029556.html 说明: glob是python自己带的一个文件操作相关模块,用它可以 ...
- python glob
http://python.jobbole.com/81552/ glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用 ...
随机推荐
- WEB控件没有什么所谓好不好,而是用得好不好
这几天Insus.NET有写几篇博文,虽然写得没怎么样,但均是Insus.NET现实开发过程中所遇或是所想的一些内容.<没有什么,开发ASP.NET时随便写写,想到什么写什么>http:/ ...
- Linux下的压缩文件剖析 (tar/gzip的区别)
Linux下的压缩文件剖析 对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是, ...
- SQL Server复制入门(二)----复制的几种模式
简介 本系列文章的上一篇对复制是什么做了一个概述.本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式. 模式的选择 选择复制的模式取决于多个方面.首先需要考虑具 ...
- 在Windows安装运行Kafka
一.安装JAVA JDK 1.下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...
- 啰里吧嗦CountDownLatch
java.util.concurrent Class CountDownLatch 目录 CountDownLatch 是什么 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等 ...
- Java基础——GUI编程(一)
一.定义 GUI全称是Graphical User Interface,即图形用户界面.JDK中提供了AWT 和 Swing 两个包,用于GUI程序的设计和开发. 1.java .awt abstr ...
- RocketMQ 概述
Rocket 火箭 MQ的作用:同步转异步(异步解耦). 难点:如何确保消息一定被消费,而且仅消费一次. 1.消息架构:生产者.服务器.消费者.路由发现. 2.消息顺序:严格按照消息到达服务器的顺序进 ...
- 使用eclipse上Tomcat插件配置域名、端口号、启动时间详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7856284.html 邮箱:moyi@moyib ...
- SD从零开始51-54 信用控制范围, 信用范围数据维护, 自动信用控制, 信用控制-阻止后续功能
[原创] SD从零开始51 信用控制范围 分散的组织结构Decentralized Organization 信用控制范围是一个为客户指定和控制信用限额的组织单元: 依赖于你公司的需求,应收款可以使用 ...
- 构建第一个SpringBoot工程
学习和使用 SpringBoot 有一段时间了,现在开始陆陆续续会总结归纳 SpringBoot 学习中遇到的相关知识点. SpringBoot 设计目的是用来简化新Spring应用的初始搭建以及开发 ...