网站首页 > 技术文章 正文
fnmatch 模块主要用于文件名的比较,使用 Unix shell 使用的 glob 样式模式。
简单匹配
fnmatch() 将单个文件名与模式进行比较并返回布尔值,来看它们是否匹配。当操作系统使用区分大小写的文件系统时,比较区分大小写。
import fnmatch import os pattern = 'fnmatch_*.py' print('Pattern :', pattern) print() files = os.listdir('.') for name in sorted(files): print('Filename: {:<25} {}'.format(name, fnmatch.fnmatch(name, pattern))) # output # Pattern : fnmatch_*.py # # Filename: fnmatch_filter.py True # Filename: fnmatch_fnmatch.py True # Filename: fnmatch_fnmatchcase.py True # Filename: fnmatch_translate.py True # Filename: index.rst False
在此示例中,模式匹配所有以 'fnmatch_' 开头和以 '.py' 结尾的文件。
要强制进行区分大小写的比较,无论文件系统和操作系统设置如何,请使用 fnmatchcase()。
import fnmatch import os pattern = 'FNMATCH_*.PY' print('Pattern :', pattern) print() files = os.listdir('.') for name in sorted(files): print('Filename: {:<25} {}'.format(name, fnmatch.fnmatchcase(name, pattern))) # output # Pattern : FNMATCH_*.PY # # Filename: fnmatch_filter.py False # Filename: fnmatch_fnmatch.py False # Filename: fnmatch_fnmatchcase.py False # Filename: fnmatch_translate.py False # Filename: index.rst False
由于用于测试此程序的 OS X 系统使用区分大小写的文件系统,因此没有文件与修改后的模式匹配。
过滤
要测试文件名序列,使用 filter(),它返回与 pattern 参数匹配的名称列表。
import fnmatch import os import pprint pattern = 'fnmatch_*.py' print('Pattern :', pattern) files = list(sorted(os.listdir('.'))) print('\nFiles :') pprint.pprint(files) print('\nMatches :') pprint.pprint(fnmatch.filter(files, pattern)) # output # Pattern : fnmatch_*.py # # Files : # ['fnmatch_filter.py', # 'fnmatch_fnmatch.py', # 'fnmatch_fnmatchcase.py', # 'fnmatch_translate.py', # 'index.rst'] # # Matches : # ['fnmatch_filter.py', # 'fnmatch_fnmatch.py', # 'fnmatch_fnmatchcase.py', # 'fnmatch_translate.py']
在此示例中,filter() 返回与此部分关联的示例源文件的名称列表。
翻译模式
在内部,fnmatch 将 glob 模式转换为正则表达式,并使用 re 模块比较名称和模式。translate() 函数是将 glob 模式转换为正则表达式的公共 API。
import fnmatch pattern = 'fnmatch_*.py' print('Pattern :', pattern) # Pattern : fnmatch_*.py print('Regex :', fnmatch.translate(pattern)) # Regex : (?s:fnmatch_.*\.py)\Z
原文链接:
https://pymotw.com/3/fnmatch/index.html
猜你喜欢
- 2025-06-18 Python小游戏——“石头剪刀布”(python石头剪刀布游戏怎么写)
- 2025-06-18 3.2数据类型和变量赋值(JAVA程序员改行Python当天入门教程)
- 2025-06-18 GESP第六次认证真题解析C++、Python直播预告
- 2025-06-18 fsociety,一个非常厉害的 Python 库!
- 2025-06-18 python学习笔记之f-string,小白的成长历程
- 2025-06-18 Python基础:f-string不同数据类型的格式化选项,终极指南!
- 2025-06-18 在 Python 中使用 f-String 格式化字符串
- 2025-06-18 如何使用 Python 的 f-string 进行字符串格式化
- 2025-06-18 Python中f-string用法(for char in python string)
- 2025-06-18 python中format函数和f-string详解
- 07-06Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- 07-06python入门-day5-循环语句(python循环语句总结)
- 07-06Python循环:重复的力量(python中如何重复循环程序)
- 07-06编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- 07-06python 简述列表推导式和生成器(python列表举例)
- 07-06Python列表推导式:让你的代码优雅如诗!
- 07-06Python中while循环详解(python中while循环的执行过程)
- 07-06Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 274℃Python短文,Python中的嵌套条件语句(六)
- 272℃python笔记:for循环嵌套。end=""的作用,图形打印
- 270℃PythonNet:实现Python与.Net代码相互调用!
- 265℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 265℃Python实现字符串小写转大写并写入文件
- 125℃原来2025是完美的平方年,一起探索六种平方的算吧
- 106℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 104℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- python入门-day5-循环语句(python循环语句总结)
- Python循环:重复的力量(python中如何重复循环程序)
- 编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- python 简述列表推导式和生成器(python列表举例)
- Python列表推导式:让你的代码优雅如诗!
- Python中while循环详解(python中while循环的执行过程)
- Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 用while循环做一个九九乘法表(用while循环和for循环分别输出九九乘法表)
- 怎么用三种代码写「九九乘法表」(九九乘法表的代码怎么写)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)