Python提供了丰富的内置模块,这些模块提供了大量的功能,涵盖了文件操作、网络编程、字符串处理、数学运算、日期和时间处理、系统编程等各个方面。
本系列将会陆续整理分享一些有趣、有用的内置模块。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/13aRH4FMdCOm5GghemfSmDQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_modules
-
支持通配符:glob模块支持Unix shell风格的通配符,如*(匹配0个或多个字符),**(匹配所有文件、目录、子目录以及子目录中的文件),?(匹配单个字符),[seq](匹配指定范围内的字符,比如:[0-9]匹配数字,[a-z]匹配小写字母)等。
|
|
|
|
|
|
|
|
-
简单易用:glob模块的API简单直观,易于理解和使用。
-
高效:对于大量文件的查找,glob模块提供了高效的方法,能够迅速筛选出符合条件的文件。
-
跨平台:glob模块在不同操作系统中表现一致,无需担心平台差异带来的问题。
test_dir
│ docx_1.docx
│ doc_1.doc
│ gif_1.gif
│ jpg_1.jpg
│
├─sub_dir_1
│ │ docx_3.docx
│ │ md_3.md
│ │ png_3.png
│ │ png_4.png
│ │
│ ├─sub_dir_11
│ │ gif_3.gif
│ │ jpg_2.jpg
│ │ md_2.md
│ │
│ └─sub_dir_12
│ md_4.md
│ pptx_2.pptx
│ ppt_2.ppt
│
└─sub_dir_2
│ doc_2.doc
│ doc_3.doc
│ pptx_3.pptx
│
└─sub_dir_21
jpg_3.jpg
png_2.png
ppt_3.ppt
glob.glob(pathname, *, root_dir=None,
dir_fd=None, recursive=False,
include_hidden=False)
该函数返回一个列表,包含所有与给定模式匹配的文件路径。
其中:
-
pathname: 要匹配的路径模式(可以是绝对路径或相对路径)。可以包含通配符 *、? 和 [seq] 等。
-
recursive (默认为 False): 如果 `recursive` 为 True,模式 `**` 将匹配任何文件以及零个或多个目录、子目录和指向目录的符号链接。如果模式后面跟着 `os.sep` 或 `os.altsep`,则文件不会匹配。
-
root_dir (默认为 None): 指定一个根目录,glob 将在该目录下开始搜索。如果为 None,则默认从当前工作目录开始。
-
dir_fd (默认为 None): 一个文件描述符,指向要在其下进行搜索的目录。如果为 None,则使用文件系统路径。
-
include_hidden (默认为 True): 指定是否包括隐藏文件(以点.开头的文件)在搜索结果中。
import glob
# 匹配test_dir文件夹下所有包含'p'的文件
glob.glob('./test_dir/*p*')
# 递归匹配test_dir文件夹下所有包含'p'的文件
glob.glob('./test_dir/**/*p*', recursive=True)
# 匹配所有以'.doc'结尾的文件
glob.glob('./test_dir/*.doc')
# 使用方括号查找以d或m开头,且以.doc结尾的文件
glob.glob('**/*.doc' , root_dir ='./test_dir' , recursive=True)
glob.iglob(pathname, *, root_dir=None,
dir_fd=None, recursive=False,
include_hidden=False)
import glob
# 使用glob.glob()方法将返回路径列表
# 使用方括号查找以d或m开头,且以.doc结尾的文件
path_list = glob.glob('./test_dir/**/*.doc' , recursive=True)
path_list
# 使用glob.iglob()方法将返回路径列表
# 使用方括号查找以d或m开头,且以.doc结尾的文件
file_path_iter = glob.iglob('./test_dir/**/*.doc' , recursive=True)
# 逐个打印匹配到的文件
for file_path in file_path_iter:
print(file_path)
glob.escape(pathname)
# 假设有一个文件名包含通配符 *
filename = 'file*.txt'
# 使用 glob.escape() 来转义文件名中的特殊字符
escaped_filename = glob.escape(filename)
# 现在可以使用转义后的文件名来安全地搜索文件
matching_files = glob.glob(escaped_filename)
glob.translate(pathname, *, recursive=False,
include_hidden=False, seps=None)
import re
# 定义一个 glob 模式
glob_pattern = '*.txt'
# 将 glob 模式转换为正则表达式模式
regex_pattern = glob.translate(glob_pattern)
# 使用 re 模块来搜索匹配的文件
for filename in os.listdir('.'):
if re.match(regex_pattern, filename):
print(filename)
https://docs.python.org/3/library/glob.html


本篇文章来源于微信公众号: 码农设计师