python的glob模块_[转载]python glob模块 通配符

python glob模块 通配符

如果您曾经使用过Windows系统的命令行提示符,或者GUN/Linux、UNIX、Mac OS

X的命令行shell,可能看到过通配符模式。通配符是一些特殊字符,例如*和?,可以使用它们匹配许多名称类似的文件。例如,使用模式P*可以匹配名称以P开头的所有文件,使用*.txt可以匹配所有后缀名为.txt的文件。

通配(globbing)是黑客们的行话,用来表示在文件名称模式中展开通配符。Python在模块glob中提供了名称也为glob()的函数,它实现了对目录内容进行通配的功能。glob.glob()函数接受通配模式作为输入,并返回所有匹配的文件名和路径名列表,这与os.listdir类似。

通配和大小写区分: 在Windows操作系统下,模式M*可以匹配名称以m和M开头的所有文件,因为文件名称和文件名称通配是不区分大小写的。在大多数其他操作系统上,通配是区分大小写的。

例如,试着使用下面的命令,列出C:Program Files目录下名称以M开头的所有条目:

>>> import

glob

>>>

glob.glob("C:\Program Files\M*")

['C:\Program Files\Messenger', 'C:\Program Files\Microsoft

Office','C:\ProgramFiles\Mozilla Firefox']

由于您的计算机可能安装了不同的软件,所以输出可能与上面不同。可以看到glob.glob()返回了符合模式的包含磁盘驱动符和目录名称的路径,这与os.listdir()不同,它只返回指定目录下的名称。

下表列出了通配模式中可以使用的通配符。这些通配符与操作系统的命令shell下的通配符并不一定完全一致,但是Python的glob模块在所有的平台上都使用相同的语法。注意,通配模式的语法与正则表达式的语法类似但不相同。

通配符 匹配 示例

* 0个或多个任意字符 *.m*匹配扩展名以m开头的名称

? 任意单个字符 ???匹配恰好包含3个字符的名称

[…] 方括号中列出的任意一个字符 [AEIOU]*匹配以大写的元音字母开头的名称

[!...] 不在方括号中出现的任意一个字符 *[!s]匹配不以s结尾的名称

也可以在方括号之间使用某个范围内的字符。例如,[m-p]匹配m、n、o、p中的任意一个字母,[!0-9]匹配数字以外的任意字符。

通配是为文件操作选择一组相似文件的较为便捷的方法。例如,要删除目录C:source中所有扩展名为.bak的备份文件,只需执行如下所示的两行代码:

>>> for path

in glob.glob("C:\source\*.bak"):

... os.remove(path)

通配比os.listdir的功能强大得多,因为可以在目录或者子目录名称中指定通配符。对于这样的模式,glob.glob可以返回多个目录下的路径。例如,下面的代码返回当前目录的所有子目录中扩展名为.txt的文件:

>>>

glob.glob("*\*.txt")

python的glob模块中使用的通配符与emeditor的正则表达式的通配符有所不同:

1、glob使用的通配符只有三个,分别是 *

? []

2、在glob中,* ? 匹配的是字符,而在emeditor中匹配的是数量。

3、在glob中,不包括用[!...],而在emedior中不包括则用[^...]。

在emeditor的正则表达式中:

1、*匹配任意个,包括零个(没有)或多个

2、?匹配零个(没有)或一个

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值