Python提供glob模块,以便搜索和查找指定搜索项或搜索模式的路径名。作为全局运算符*?[]glob也被称为Unix风格的路径名模式扩展。在本教程中,我们将研究glob模块 全局() 方法,也可以表示为 glob.glob() .
null
glob()方法语法
glob()方法是通过glob模块提供的。为了使用glob()方法,我们应该导入glob模块。glob方法具有以下语法。
glob.glob(PATHNAME,*,RECURSIVE)
- 路径名 是要搜索和匹配的路径和文件名。通常,完整路径或绝对路径与要匹配的文件或目录名一起提供。此参数是必需的。
- 递归的 用于启用递归搜索。默认情况下RECURSIVE为false,这意味着默认情况下不启用递归搜索。此参数是可选的。
*签名-匹配所有内容
*或星号用于匹配一个或多个字符。表达名字很灵活。在下面的示例中,我们将在“/home/ismail”路径下列出evey文件和目录。
import glob
for name in glob.glob('/home/ismail/*'):
print(name)
我们可以从输出中看到每个文件和文件夹都是匹配的。
/home/ismail/userinput.py /home/ismail/ipaddress.txt /home/ismail/Pictures /home/ismail/data2 /home/ismail/random.c /home/ismail/file1 /home/ismail/uniqip.txt /home/ismail/config.ttxt /home/ismail/names.txt /home/ismail/data4 /home/ismail/mylink /home/ismail/file3 /home/ismail/while.sh /home/ismail/Desktop /home/ismail/Videos...
另外,我们可以使用*星号来匹配或全局指定的文件扩展名。例如“*.txt”可以用来匹配和只列出文本文件。
import glob
for name in glob.glob('/home/ismail/*.txt'):
print(name)
输出如下所示,其中仅列出带有“*.txt”的文本文件。
/home/ismail/ipaddress.txt /home/ismail/uniqip.txt /home/ismail/names.txt /home/ismail/sample.txt /home/ismail/IPaddress_sorted.txt /home/ismail/file.txt /home/ismail/text.txt
*星号字符的另一个流行且有用的用例是提供文件或文件夹名称的某些部分并过滤所有内容。在下面的示例中,我们将匹配那些名称包含“data”的文件和目录。
import glob
for name in glob.glob('/home/ismail/*data*'):
print(name)
输出如下。
/home/ismail/data2/home/ismail/data4/home/ismail/data5/home/ismail/data1/home/ismail/data3
? 符号-匹配任何单个字符
这个?或问号用于指定单个字符。这个字符可以是字母或数字。在下面的示例中,我们将搜索“ 数据? “最后一个角色可以是任何东西。
import glob
for name in glob.glob('/home/ismail/data?'):
print(name)
输出如下。
/home/ismail/data2/home/ismail/data4/home/ismail/data5/home/ismail/data1/home/ismail/data3
[]–匹配指定的字符范围
[]括号用于指定多个字符或字符范围。例如[0-9]指定从0到9的数字。
import glob
for name in glob.glob('/home/ismail/*[0-9]*'):
print(name)
输出如下所示。列出至少包含一个数字的任何文件或目录名。
/home/ismail/data2/home/ismail/file1/home/ismail/data4/home/ismail/file3/home/ismail/data5/home/ismail/nmap-7.91.tar.bz2/home/ismail/data1/home/ismail/data3/home/ismail/file4/home/ismail/file2
在子目录中递归使用Glob Find文件
glob()方法的另一个有用特性是递归地列出目录。这意味着将在提供的路径及其子目录中搜索指定的文件名。为了这条路 ** 双星号用于指定子目录和 递归的 参数设置为 是的 .
import glob
for name in glob.glob('/home/ismail/**/*.txt',recursive=True):
print(name)
输出如下。
/home/ismail/ipaddress.txt/home/ismail/uniqip.txt/home/ismail/names.txt/home/ismail/sample.txt/home/ismail/IPaddress_sorted.txt/home/ismail/file.txt/home/ismail/text.txt/home/ismail/Desktop/usomlist.txt/home/ismail/Downloads/myfile.txt/home/ismail/Templates/Plain Text.txt
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END