☰
`import os, glob` 为入口,围绕“文件批处理”展开,逐步扩展到图像批量处理、浏览器自动化、控制台窗口控制与脚本打包,形成一份完整的技术报告
2026/10/24 6:44:22 网站建设 项目流程

1024 对程序员而言,不只是 2¹⁰,更是一种“用代码解决重复劳动”的精神。日常工作中,文件重命名、日志筛选、图片批量处理、网页数据抓取、控制台窗口控制、脚本打包分发等任务,如果全靠人工点击,既耗时又容易出错。Python 之所以能成为自动化首选语言,正因为它拥有成熟的标准库与生态:os、glob、shutil负责文件与目录;Pillow负责图像批量处理;selenium负责浏览器自动化;subprocess和ctypes可用于控制台窗口控制;pyinstaller可将脚本打包为可执行程序。

本报告以import os, glob为入口,围绕“文件批处理”展开,逐步扩展到图像批量处理、浏览器自动化、控制台窗口控制与脚本打包,形成一份完整的技术报告。文中代码均可在本地修改路径后运行。


二、技术背景:os与glob在自动化中的位置

os模块是 Python 与操作系统交互的基础工具,提供目录遍历、路径拼接、文件重命名、文件删除、创建文件夹等能力。它的优势是稳定、跨平台、无需安装。

glob模块则专注于“按模式匹配文件路径”。例如*.jpg、**/*.log、data_2026*.csv这类规则,用glob一行即可表达,比手动遍历目录再判断后缀更简洁。

两者结合后,可以覆盖大量自动化场景:

能力os负责glob负责
文件查找遍历目录、判断文件/文件夹按通配符筛选文件
路径处理os.path.join、os.path.splitext返回完整路径列表
批量操作重命名、移动、删除、创建目录快速定位目标文件集合
递归处理需配合os.walk可用**+recursive=True

glob的常用通配符包括:*匹配任意字符,?匹配单个字符,**匹配多层子目录。需要注意的是,**递归搜索必须设置recursive=True。


三、核心代码:一个通用的文件批处理引擎

下面给出一个可复用的批处理脚本。它支持按扩展名筛选、递归搜索、文件重命名、文件移动、文件统计和图像批量压缩。

importosimportglobimportshutilfrompathlibimportPathfromPILimportImage# ========= 1. 按模式查找文件 =========deffind_files(directory,pattern="*",recursive=False):"""返回匹配模式的文件路径列表"""search_path=os.path.join(directory,pattern)returnglob.glob(search_path,recursive=recursive)# ========= 2. 批量重命名 =========defbatch_rename(directory,pattern="*.txt",prefix="file_",start=1):files=find_files(directory,pattern,recursive=True)files.sort()forindex,file_pathinenumerate(files,start=start):path=Path(file_path)new_name=f"{prefix}{index}{path.suffix}"new_path=path.parent/new_nameifnew_path.exists():print(f"跳过已存在文件:{new_path}")continueos.rename(file_path,new_path)print(f"重命名:{file_path}->{new_path}")# ========= 3. 按扩展名分类整理 =========deforganize_files(directory):files=find_files(directory,"*",recursive=False)forfile_pathinfiles:ifnotos.path.isfile(file_path):continueext=Path(file_path).suffix.lower()ifnotext:continuefolder_name=ext.replace(".","")+"_files"dest_dir=os.path.join(directory,folder_name)os.makedirs(dest_dir,exist_ok=True)dest_path=os.path.join(dest_dir,os.path.basename(file_path))ifos.path.exists(dest_path):print(f"文件已存在,跳过:{file_path}")continueshutil.move(file_path,dest_path)print(f"移动到:{dest_path}")# ========= 4. 图像批量压缩 =========defbatch_compress_images(directory,max_size=1920,quality=85):patterns=["*.jpg","*.jpeg","*.png","*.bmp","*.webp"]images=[]forpatterninpatterns:images.extend(find_files(directory,pattern,recursive=True))forimg_pathinimages:try:img=Image.open(img_path)ifmax(img.size)>max_size:img.thumbnail((max_size,max_size))img.save(img_path,quality=quality,optimize=True)print(f"压缩完成:{img_path}")exceptExceptionase:print(f"处理失败:{img_path}, 错误:{e}")# ========= 5. 文件统计报告 =========deffile_statistics(directory):stats={}total_size=0total_count=0forroot,dirs,filesinos.walk(directory):fornameinfiles:file_path=os.path.join(root,name)try:size=os.path.getsize(file_path)exceptOSError:continueext=Path(name).suffix.lower()or"无扩展名"stats[ext]=stats.get(ext,0)+1total_size+=size total_count+=1print(f"文件总数:{total_count}")print(f"总大小:{total_size/1024/1024:.2f}MB")forext,countinsorted(stats.items(),key=lambdax:x[1],reverse=True):print(f"{ext}:{count}个")# ========= 入口示例 =========if__name__=="__main__":work_dir=r"./data"print("=== 文件统计 ===")file_statistics(work_dir)print("\n=== 批量重命名 txt 文件 ===")batch_rename(work_dir,pattern="*.txt",prefix="note_",start=1)print("\n=== 图像批量压缩 ===")batch_compress_images(work_dir,max_size=1920,quality=85)print("\n=== 按扩展名整理文件 ===")organize_files(work_dir)

四、代码解析

  1. find_files:统一文件查找入口
    该函数将glob.glob封装起来,支持递归搜索。后续所有批处理逻辑都通过它获取文件列表,避免重复写通配符匹配代码。

  2. batch_rename:安全重命名
    通过Path(file_path).suffix保留原始扩展名,使用start控制编号起点。代码中加入new_path.exists()判断,防止覆盖已有文件。

  3. organize_files:按扩展名归档
    它会把.jpg文件移动到jpg_files,.pdf文件移动到pdf_files。适合整理下载目录、项目临时目录或测试素材目录。

  4. batch_compress_images:图像批量处理
    使用 Pillow 的thumbnail保持宽高比,再通过optimize=True降低体积。该模式适合网站图片、截图素材、批量导出图等场景。

  5. file_statistics:生成统计报告
    使用os.walk递归遍历,按扩展名聚合数量,并计算总大小。它可以帮助判断一个目录中主要包含哪些文件类型。


五、扩展亮点:从文件批处理到完整自动化链路

1. 图像批量处理可进一步工程化

实际项目中,图像批量处理往往不只是压缩,还可能包括灰度化、二值化、尺寸统一、水印添加、格式转换等。例如财务票据、产品截图、扫描件归档等场景,都可以先通过glob批量筛选,再交给 Pillow 或 OCR 引擎处理。

2. 可结合 Selenium 做网页自动化

如果文件来源于网页,例如每日报表、公开数据页面、系统导出页,可以使用selenium自动登录、点击下载按钮、等待文件生成,再用os、glob对下载目录进行后续处理。这样就能把“网页操作 + 本地文件处理”连成一条自动化流水线。

3. 可加入控制台窗口控制

对于需要长期运行的自动化脚本,例如定时整理文件、定时压缩图片、定时备份目录,可以通过控制台窗口标题、窗口大小、最小化运行等方式提升可用性。Windows 环境下也可结合subprocess、ctypes或系统任务计划程序,让脚本在后台稳定执行。

4. 可用 PyInstaller 打包交付

自动化脚本完成后,如果希望交给同事或部署到没有 Python 环境的机器上,可以使用pyinstaller打包为可执行文件。这样用户无需安装解释器,也能直接运行批处理工具。打包时需要注意资源路径、配置文件路径以及第三方库依赖。

5. 可加入异常处理与日志记录

生产环境中的自动化脚本不应只依赖print。更稳健的做法是引入logging模块,记录成功、失败、跳过、重试等信息;对文件不存在、权限不足、编码错误、图像损坏等异常分别处理,避免一次失败导致整个批处理中断。


六、运行建议与注意事项

  1. 先备份,再操作
    涉及重命名、移动、删除、压缩覆盖原文件时,建议先复制一份原始目录,避免误操作。

  2. 优先使用测试目录
    不要直接在重要工作目录运行批处理脚本。可以先用少量测试文件验证逻辑。

  3. 路径尽量使用绝对路径或明确相对路径
    os.path.join和pathlib.Path可以避免手动拼接路径带来的斜杠错误。

  4. 大目录建议使用迭代方式
    如果目录下文件数量极大,可以考虑glob.iglob或逐文件处理,减少内存占用。

  5. 遵守合规边界
    浏览器自动化、网页数据抓取、批量下载等行为必须遵守目标网站规则,不得抓取隐私数据、受保护数据或违反服务条款的内容。


七、总结

这份报告从import os, glob出发,展示了 Python 在文件批处理、图像批量处理、浏览器自动化、控制台窗口控制与脚本打包中的综合价值。os提供了与文件系统交互的基础能力,glob提供了简洁强大的文件筛选能力,二者结合后几乎可以覆盖日常自动化中 80% 的文件处理需求。

1024 程序员节的意义,不只是庆祝编程本身,更是提醒我们:真正有价值的代码,往往不是写得多么复杂,而是能否把重复、琐碎、容易出错的工作交给程序完成。用几十行 Python 脚本替代几小时人工操作,用可复用的工具替代临时性手工整理,这正是自动化技术最朴素也最实用的价值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询