【Python】用glob模块实现文件批量筛选与路径模式匹配
1. 为什么需要glob模块在日常开发中我经常遇到需要批量处理文件的情况。比如上周帮朋友整理婚礼照片几千张图片散落在不同文件夹里手动筛选简直要命。这时候Python的glob模块就成了救命稻草。与os.listdir()相比glob最大的优势是支持通配符匹配。想象你有一堆日志文件命名格式是access_20230601.log用os.listdir()只能获取全部文件列表而glob可以直接用access_2023*.log这样的模式精准匹配。更棒的是glob支持递归查找。我最近做的项目需要分析服务器上多层嵌套的日志目录一行glob.glob(logs/**/*.log, recursiveTrue)就搞定了所有文件定位省去了手动递归的麻烦。2. glob核心用法详解2.1 基础通配符三剑客glob模块最常用的三个通配符我习惯叫它们三剑客*星号匹配任意长度字符。比如*.jpg匹配所有jpg图片?问号匹配单个字符。photo?.jpg可以匹配photo1.jpg但匹配不了photo10.jpg[]中括号匹配指定范围。[0-9].txt匹配0.txt到9.txt实测一个有趣的用法report_[0-9][0-9].docx可以精准匹配类似report_01.docx这样的双数字编号文件比正则表达式简单多了。2.2 递归查找的黑科技**双星号是glob的隐藏大招。配合recursiveTrue参数可以穿透所有子目录。我整理电子书时这样用all_epubs glob.glob(我的图书馆/**/*.epub, recursiveTrue)这行代码会扫描我的图书馆下所有子文件夹找出所有epub格式的电子书。注意Windows路径要用反斜杠建议用原始字符串rC:\Users\*\Documents\*.docx3. 实战场景应用3.1 日志文件归档上周帮客户写了个日志清理脚本需求是保留最近7天的日志。我是这样实现的import glob import os from datetime import datetime, timedelta log_files glob.glob(/var/log/app/*.log) cutoff_date datetime.now() - timedelta(days7) for log in log_files: file_date datetime.fromtimestamp(os.path.getmtime(log)) if file_date cutoff_date: os.remove(log) print(f已删除过期日志: {log})3.2 图片批量处理做自媒体的小伙伴经常要处理大量图片。这是我的素材分类脚本核心代码image_types [*.jpg, *.png, *.gif] for ext in image_types: for img in glob.glob(f原始素材/**/{ext}, recursiveTrue): # 根据分辨率分类 if is_high_res(img): shutil.move(img, 高清图库) else: shutil.move(img, 普通图库)4. 高级技巧与避坑指南4.1 匹配中文文件名很多新手会遇到中文路径问题。我的经验是一定要处理编码path 文档/*.docx encoded_path path.encode(utf-8).decode(gbk) # Windows系统需要 files glob.glob(encoded_path)4.2 性能优化建议处理超大量文件时我发现改用iglob可以提升性能# 传统方式一次性加载所有结果 files glob.glob(大数据集/**/*.csv) # 改进方式迭代器懒加载 for file in glob.iglob(大数据集/**/*.csv): process_file(file)4.3 常见问题排查最近帮同事解决的一个典型问题模式匹配失效。原因是他们用了glob.glob(*.TXT)但在Linux系统上文件名是区分大小写的。解决方案# 不区分大小写的匹配方案 files [f for f in glob.glob(*) if f.lower().endswith(.txt)]5. 与其他模块的配合5.1 结合pathlib使用Python3.4推荐用pathlib的glob方法代码更优雅from pathlib import Path # 查找所有配置文件 config_files Path(/etc).rglob(*.conf) # 相当于glob的**/*.conf5.2 配合shutil进行文件操作我常用的文件备份套路import shutil import glob for src in glob.glob(重要文档/**/*.docx, recursiveTrue): dst f备份/{os.path.basename(src)} shutil.copy2(src, dst)6. 实际项目经验分享去年开发自动化测试框架时我设计了一个智能用例发现机制def discover_testcases(): testcases [] for pattern in [test_*.py, *_test.py, *_spec.py]: testcases.extend(glob.glob(ftests/**/{pattern}, recursiveTrue)) return sorted(list(set(testcases)))这个方案自动识别三种主流命名规范的测试文件去重后返回有序列表。团队反馈比之前硬编码路径的方式灵活多了。

相关新闻

ZenlessZoneZero-OneDragon:基于状态机的游戏自动化架构设计与实践

ZenlessZoneZero-OneDragon:基于状态机的游戏自动化架构设计与实践

ZenlessZoneZero-OneDragon:基于状态机的游戏自动化架构设计与实践 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon …

2026/6/30 11:54:26阅读更多 →
终极免费方案:简单3步永久备份微信聊天记录到电脑

终极免费方案:简单3步永久备份微信聊天记录到电脑

终极免费方案:简单3步永久备份微信聊天记录到电脑 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心手机丢失后珍贵的聊天记录会永远消失&#xff1f…

2026/6/30 11:54:26阅读更多 →
QKeyMapper:终极游戏手柄按键映射工具,3步实现完美PC游戏体验

QKeyMapper:终极游戏手柄按键映射工具,3步实现完美PC游戏体验

QKeyMapper:终极游戏手柄按键映射工具,3步实现完美PC游戏体验 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射…

2026/6/30 11:54:26阅读更多 →
不知如何挑选升降龙门架公司?这几个要点帮你轻松抉择!

不知如何挑选升降龙门架公司?这几个要点帮你轻松抉择!

在工业生产、物流运输等众多领域中,升降龙门架凭借其高效的起重和升降功能,发挥着重要作用。然而,市场上的升降龙门架公司繁多,如何挑选成为了一道难题。以下这几个要点,能助你做好抉择。技术实力与创新能力技术实力是…

2026/6/30 12:54:31阅读更多 →
LosslessCut终极指南:快速无损视频剪辑的完整教程

LosslessCut终极指南:快速无损视频剪辑的完整教程

LosslessCut终极指南:快速无损视频剪辑的完整教程 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾经遇到过需要从长视频中快速提取精彩片段&#…

2026/6/30 12:54:31阅读更多 →
电脑加密软件有哪些?6 款电脑加密软件精选推荐,2026 电脑防泄密指南

电脑加密软件有哪些?6 款电脑加密软件精选推荐,2026 电脑防泄密指南

电脑文件随便泄露、被拷贝真的太吃亏!很多人都不知道电脑加密软件有哪些踩了无数防护坑!今天精选6 款电脑加密软件整理出 2026 最全电脑加密软件防泄密指南个人办公、企业保密都能直接套用!安秉电脑加密软件透明无感加密,操作习惯…

2026/6/30 12:54:31阅读更多 →
OneMore插件:让OneNote笔记效率提升300%的终极指南

OneMore插件:让OneNote笔记效率提升300%的终极指南

OneMore插件:让OneNote笔记效率提升300%的终极指南 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 还在为OneNote功能有限而烦恼吗?OneMore插件…

2026/6/30 12:54:31阅读更多 →
零代码文本分析终极指南:KH Coder如何让普通人3分钟上手大数据分析

零代码文本分析终极指南:KH Coder如何让普通人3分钟上手大数据分析

零代码文本分析终极指南:KH Coder如何让普通人3分钟上手大数据分析 【免费下载链接】khcoder KH Coder: for Quantitative Content Analysis or Text Mining 项目地址: https://gitcode.com/gh_mirrors/kh/khcoder 你是否曾面对海量文本数据感到束手无策&…

2026/6/30 12:54:31阅读更多 →
Sunshine游戏串流服务器完整指南:如何打造个人专属云游戏平台

Sunshine游戏串流服务器完整指南:如何打造个人专属云游戏平台

Sunshine游戏串流服务器完整指南:如何打造个人专属云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为电脑游戏只能在书房玩而烦恼吗?想要在平…

2026/6/30 12:49:31阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时,很多人会被它复杂的界面吓到。其实只要掌握几个核心区域,就能快速上手。我最开始用PPT时,经常找不到功能按钮在哪,后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时,我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果,但按错了就可能坠机。经过多年实战,我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →