glob
是一个通用术语,用于定义根据与unixshell相关的规则匹配指定模式的技术。Linux和Unix系统以及shell也支持glob,并提供glob()函数 在系统库中。在本教程中,我们将 glob()
Python编程语言中函数的用法。
导入全局模块
为了使用 glob()
以及我们需要导入的相关函数 glob
模块。请记住 glob
模块包含 glob()
以及其他相关功能。
import glob

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

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

我们可以看到有很多 .txt
以Python列表形式返回的文件。
具有多级目录的通配符
我们可以使用通配符来指定多级目录。如果我们想搜索指定的glob的一级目录,我们将使用 /*/
. 在本例中,我们搜索 .txt
一级目录中的文件 /home/ismail
. 这也称为“glob glob”,因为我们使用模块名glob和glob模块提供的函数glob。
glob.glob("/home/ismail/*/*.txt")

单字符通配符
有一个问号用于匹配单个字符。如果我们不知道给定名称的单个字符,这可能很有用。在本例中,我们将用文件匹配文件 file?.txt
这些匹配的文件
- 文件.txt
- 文件1.txt
- 文件5.txt
- …
glob.glob("/home/ismail/file?.txt")
多个字符
Glob还支持字母和数字字符。我们可以用 [
开始字符范围和 ]
用于结束字符范围。我们可以把我们想匹配的东西放在方括号里。在本例中,我们将匹配从其中一个开始的文件和文件夹名称 e,m,p
.
glob.glob("/home/ismail/[emp]*.tx?")

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

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

用iglob()方法返回生成器
通常,glob方法用于列出指定模式的文件。但在某些情况下,列出和存储它们可能是一项乏味的工作。所以呢 iglob()
函数可用于创建迭代器,该迭代器可用于使用 next()
功能。
import globgen = glob.iglob("*.txt")for item in gen: print(item)
![图片[8]-函数来匹配路径、目录、文件名和示例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/04/poftut_image-170.png)
使用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)