加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Python(Unix)中的Unix样式路径名模式扩展

发布时间:2022-10-31 14:01:25 所属栏目:Unix 来源:转载
导读: 程序多次需要遍历文件系统中的文件列表,通常其名称与模式匹配。glob模块可用于在特定目录中创建具有特定扩展名或具有特定字符串作为文件名一部分的文件。
glob模块功能使用的模式匹配机制

程序多次需要遍历文件系统中的文件列表,通常其名称与模式匹配。glob模块可用于在特定目录中创建具有特定扩展名或具有特定字符串作为文件名一部分的文件。

glob模块功能使用的模式匹配机制遵循UNIX路径扩展规则。该模块虽然不会扩展波浪号(?)和shell变量。

Glob模块中主要有三个功能

glob()

此函数返回与pathname参数中给定模式匹配的文件列表。路径名可以是绝对的或相对的。它可以包含*和?之类的通配符。

默认情况下,此函数的递归参数为False。如果为True,则递归搜索当前目录的子目录以查找与给定模式匹配的文件。

以下代码显示扩展名为“ .py”的当前目录中的所有文件。

>>>?import?glob
>>>?for?file?in?glob.glob("*.py"):
print?(file)

在以下代码中unix路径简化,recursive = True参数还将导致子目录中带有'.py'扩展名的文件也被打印出来。

>>>?for?file?in?glob.glob("*.py",?recursive=True):
print?(file)

模式路径名可以包含通配符?。以下语句打印名称为三个字母且前两个字母为“ pp”的文件列表。

>>>?for?file?in?glob.glob("pp?.py"):
print?(file)

以下代码打印名称以数字结尾的文件。

>>>?for?file?in?glob.glob('*[0-9].py')
print?(file)

遵循以下语法将以递归方式打印与给定路径匹配的文件。

>>>?glob.glob('**/*.py',?recursive=True)

要在当前目录中递归打印目录名称,

>>>?glob.glob('tcl/**/',?recursive=True)

iglob()

此函数返回生成器对象,而不是文件列表。使用next()函数,可以如下打印后续文件名。

>>>?it=glob.iglob('*.py')
>>>?type(it)

>>>?while?True:
try:
file=next(it)
print?(file)
except?StopIteration:
break

逃逸()

此函数转义给定字符。当带有某些字符的文件需要作为名称的一部分时,这很有用。以下示例搜索在chars字符串中具有任何字符的文件。

>>>?chars='[]()#'
>>>?for?char?in?chars:
esc='*'+glob.escape(char)+'.py'
for?file?in?(glob.glob(esc)):
print?(file)
xyz[.py
pp[].py
pp(.py
pp#.py

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章