函数来匹配路径、目录、文件名和示例

glob 是一个通用术语,用于定义根据与unixshell相关的规则匹配指定模式的技术。Linux和Unix系统以及shell也支持glob,并提供glob()函数 在系统库中。在本教程中,我们将 glob() Python编程语言中函数的用法。

null

导入全局模块

为了使用 glob() 以及我们需要导入的相关函数 glob 模块。请记住 glob 模块包含 glob() 以及其他相关功能。

import glob
Import Glob Module
导入全局模块

精确字符串搜索

我们将从一个简单的例子开始。我们将了解如何将精确的字符串或文件名与绝对路径匹配。在本例中,我们将列出 /home/ismail/poftut.c . 我们可以看到下面的示例,该函数返回一个包含匹配项的列表。

glob.glob("/home/ismail/poftut.c")
Exact String Search
精确字符串搜索

通配符

通配符是glob操作的重要glob运算符。通配符或星号用于匹配零个或多个字符。通配符指定字符不重要时可以有零个字符或多个字符。在这个exmaple中,我们将匹配那些 .txt 分机。

glob.glob("/home/ismail/*.txt")
Wildcards
通配符

我们可以看到有很多 .txt 以Python列表形式返回的文件。

具有多级目录的通配符

我们可以使用通配符来指定多级目录。如果我们想搜索指定的glob的一级目录,我们将使用 /*/ . 在本例中,我们搜索 .txt 一级目录中的文件 /home/ismail . 这也称为“glob glob”,因为我们使用模块名glob和glob模块提供的函数glob。

glob.glob("/home/ismail/*/*.txt")
Wildcards with Multilevel Directories
具有多级目录的通配符

单字符通配符

有一个问号用于匹配单个字符。如果我们不知道给定名称的单个字符,这可能很有用。在本例中,我们将用文件匹配文件 file?.txt 这些匹配的文件

  • 文件.txt
  • 文件1.txt
  • 文件5.txt
glob.glob("/home/ismail/file?.txt")

多个字符

Glob还支持字母和数字字符。我们可以用 [ 开始字符范围和 ] 用于结束字符范围。我们可以把我们想匹配的东西放在方括号里。在本例中,我们将匹配从其中一个开始的文件和文件夹名称 e,m,p .

glob.glob("/home/ismail/[emp]*.tx?")
Character Ranges
字符范围

数字范围

在某些情况下,我们可能需要匹配数字范围。我们可以用 - 用短划线指定起始和结束编号。在本例中,我们将用 0-9 . 在本例中,我们将匹配包含从0到9的数字的文件名和文件夹名。

glob.glob("/home/ismail/*[0-9]*")
Number Ranges
数字范围

字母范围

我们还可以定义类似于数字范围的字母范围。我们将使用 a-z 对于小写字符,其中A-Z 用于大写字符。如果我们需要在一个语句中匹配大写和小写字符呢。我们可以用a-Z 匹配小写和大写字母。在本例中,我们将匹配以字母开头的文件和文件夹名称 a c

glob.glob("/home/ismail/[a-c]*")
Alphabet Ranges
字母范围

用iglob()方法返回生成器

通常,glob方法用于列出指定模式的文件。但在某些情况下,列出和存储它们可能是一项乏味的工作。所以呢 iglob() 函数可用于创建迭代器,该迭代器可用于使用 next() 功能。

import globgen = glob.iglob("*.txt")for item in gen:   print(item)
图片[8]-函数来匹配路径、目录、文件名和示例-yiteyi-C++库
用iglob()方法返回生成器

使用escape()方法跳过特定字符

escape() 函数可用于跳过或不列出那些名称中指定了字符的某些文件。例如,如果我们想跳过这些名称包含的文件 - _ # 我们可以通过提供这些字符来使用escape()函数。

chars_skip = "-_#"for char_skip in chars_skip:  esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"  for txt in (glob.glob(esc_set)):    print(txt)

相关文章: C数字变量类型Integer,Long,Float

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享