Python之fnmatch模块的使用
fnmatch模块的作用
主要用于文件名的匹配,匹配到返回True或匹配不到返回False。
1、匹配文件名,是否一样
import fnmatch import os pattern = 'server_*.py' print('Pattern:', pattern) files = os.listdir('.') for name in sorted(files): print('文件名: {:<25} {}'.format(name, fnmatch.fnmatch(name, pattern)))
测试效果
Pattern: server_*.py 文件名: .idea False 文件名: __pycache__ False 文件名: dir False 文件名: parser_xls False 文件名: server.py False 文件名: server_1.py True 文件名: server_adf.py True 文件名: template False 文件名: fnmatch_fnmatch.py False 文件名: todb.db False
2、区分文件名大小写的比较
import fnmatch import os pattern = 'SERVER_*.PY' print('Pattern:', pattern) files = os.listdir('.') for name in sorted(files): print('文件名: {:<25} {}'.format(name, fnmatch.fnmatchcase(name, pattern)))
测试效果
Pattern: SERVER_*.PY 文件名: .idea False 文件名: SERVER_1.PY True 文件名: __pycache__ False 文件名: dir False 文件名: parser_xls False 文件名: server.py False 文件名: server_adf.py False 文件名: template False 文件名: test.py False 文件名: todb.db False
3、从列表中过滤出匹配的文件名
import fnmatch import os import pprint pattern = 'server_*.py' print('Pattern : ', pattern) files = list(sorted(os.listdir('.'))) print('Files :') pprint.pprint(files) print('\nMatches :') pprint.pprint(fnmatch.filter(files, pattern))
测试效果
Pattern : server_*.py Files : ['.idea', 'SERVER_1.PY', '__pycache__', 'dir', 'parser_xls', 'server.py', 'server_adf.py', 'template', 'test.py', 'todb.db'] Matches : ['SERVER_1.PY', 'server_adf.py']
4、将指定好的规则转为成正则表达式
import fnmatch pattern = 'server_*.py' print('Pattern : ', pattern) print('正则表达式', fnmatch.translate(pattern))
测试效果
Pattern : server_*.py
正则表达式 (?s:server_.*\.py)\Z