每天重复3小时的活,Python帮我10分钟搞定(附完整代码)
大家好
先问一个问题:你每天有多少时间花在复制粘贴、整理文件、处理Excel这些重复性工作上?
上周,我旁边工位的同事对着电脑疯狂操作,从早上9点干到下午5点,就为了整理100多个Excel表格[reference:5]。而我只用了10分钟写了个Python脚本,一键搞定。
今天,我就把这套职场必备的Python自动化脚本库分享出来。全部代码可直接复制运行,覆盖文件整理、Excel处理、PDF操作、批量重命名等最常用的场景[reference:6]。
一、场景1:文件自动整理——再也不用手动分类了
每天下载的文件堆满桌面?这个脚本帮你按文件类型自动分类。
import osimport shutil# 文件类型映射FILE_TYPES = { '图片': ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg'], '文档': ['.doc', '.docx', '.pdf', '.txt', '.xls', '.xlsx', '.ppt', '.pptx'], '压缩包': ['.zip', '.rar', '.7z', '.tar', '.gz'], '视频': ['.mp4', '.avi', '.mov', '.mkv', '.flv'], '音频': ['.mp3', '.wav', '.aac', '.flac'], '代码': ['.py', '.js', '.html', '.css', '.java', '.cpp', '.go'],}def auto_sort_files(folder_path): ”””自动将文件夹内的文件按类型分类到子文件夹””” if not os.path.exists(folder_path): print(f”❌ 文件夹不存在: {folder_path}”) return# 遍历文件夹内所有文件 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) if os.path.isdir(file_path): continue# 跳过子文件夹# 获取文件扩展名 _, ext = os.path.splitext(filename) ext = ext.lower()# 找到对应的分类文件夹 target_folder = '其他' for category, extensions in FILE_TYPES.items(): if ext in extensions: target_folder = category break# 创建目标文件夹并移动文件 target_path = os.path.join(folder_path, target_folder) os.makedirs(target_path, exist_ok=True) shutil.move(file_path, os.path.join(target_path, filename)) print(f”✅ 已移动: {filename} -> {target_folder}/”)# 使用示例:整理当前目录下的文件if __name__ == ”__main__”: auto_sort_files(”.”)
二、场景2:批量文件重命名——告别一个一个改
import osdef batch_rename(folder_path, prefix, start_num=1): """批量重命名文件:统一添加前缀+序号""" files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] files.sort() # 按名称排序 for i, filename in enumerate(files, start=start_num): # 获取文件扩展名 _, ext = os.path.splitext(filename) # 新文件名:前缀_序号.扩展名 new_name = f"{prefix}_{i:03d}{ext}" old_path = os.path.join(folder_path, filename) new_path = os.path.join(folder_path, new_name) os.rename(old_path, new_path) print(f"✅ {filename} -> {new_name}")# 使用示例:将当前目录所有文件重命名为 "报告_001.jpg" 格式if __name__ == "__main__": batch_rename(".", "报告")
三、场景3:Excel数据合并——100个表1秒汇总
运营、财务、HR最需要的功能:把多个Excel文件合并成一个-。import pandas as pdimport osdef merge_excel_files(folder_path, output_file="合并结果.xlsx"): """合并文件夹内所有Excel文件""" all_data = [] for filename in os.listdir(folder_path): if filename.endswith(('.xlsx', '.xls')): file_path = os.path.join(folder_path, filename) try: df = pd.read_excel(file_path) all_data.append(df) print(f"✅ 已读取: {filename} ({len(df)}行)") except Exception as e: print(f"❌ 读取失败: {filename} - {e}") if all_data: result = pd.concat(all_data, ignore_index=True) result.to_excel(output_file, index=False) print(f"🎉 合并完成!共 {len(result)} 行,保存为: {output_file}") else: print("❌ 未找到任何Excel文件")if __name__ == "__main__": merge_excel_files(".") # 合并当前目录所有Excel
四、场景4:PDF批量合并——把零散文件变整本
import PyPDF2import osdef merge_pdfs(folder_path, output_file="合并.pdf"): """合并文件夹内所有PDF文件""" pdf_writer = PyPDF2.PdfWriter() pdf_files = [f for f in os.listdir(folder_path) if f.endswith('.pdf')] pdf_files.sort() for filename in pdf_files: file_path = os.path.join(folder_path, filename) try: with open(file_path, 'rb') as f: pdf_reader = PyPDF2.PdfReader(f) for page in pdf_reader.pages: pdf_writer.add_page(page) print(f"✅ 已添加: {filename} ({len(pdf_reader.pages)}页)") except Exception as e: print(f"❌ 处理失败: {filename} - {e}") with open(output_file, 'wb') as f: pdf_writer.write(f) print(f"🎉 合并完成!共 {len(pdf_writer.pages)} 页,保存为: {output_file}")if __name__ == "__main__": merge_pdfs(".") # 合并当前目录所有PDF
五、场景5:重复文件查找——释放硬盘空间
import osimport hashlibdef find_duplicates(folder_path): """查找文件夹内的重复文件""" hash_map = {} duplicates = [] for dirpath, _, filenames in os.walk(folder_path): for filename in filenames: file_path = os.path.join(dirpath, filename) try: # 计算文件MD5 with open(file_path, 'rb') as f: file_hash = hashlib.md5(f.read()).hexdigest() if file_hash in hash_map: duplicates.append((file_path, hash_map[file_hash])) else: hash_map[file_hash] = file_path except Exception: pass if duplicates: print(f"🔍 发现 {len(duplicates)} 组重复文件:") for dup, original in duplicates: print(f" 重复: {dup}") print(f" 原始: {original}\n") else: print("✅ 未发现重复文件") return duplicatesif __name__ == "__main__": find_duplicates(".") # 查找当前目录重复文件[reference:10]
六、使用说明
运行前需要安装依赖库(打开终端/命令行执行):
pip install pandas openpyxl PyPDF2
运行方式:
把上面任意一个脚本复制到 .py 文件中
把要处理的文件放在脚本同一目录下(或修改 folder_path 参数)
双击运行,或者终端执行 python 文件名.py
写在最后
以上5个脚本,覆盖了文件整理、批量重命名、Excel合并、PDF合并、查重五个最常用的场景-。
💡 一个小建议:不要一次性全复制粘贴。先挑一个你最需要的场景,跑通之后自然就知道怎么举一反三了。
附录:依赖库安装命令
# 一次性安装所有依赖pip install pandas openpyxl PyPDF2
本文所有代码均在 Python 3.8+ 环境下测试通过。
为了帮大家**真正用起来,而不是收藏吃灰**,我决定把这份福利升级一下:
🎁 福利:Python 入门大礼包(限时免费领)
关注我的公众号 ,在后台回复关键词 **学习** ,即可免费领取:
- 📺 **400 集 Python 零基础入门视频教程**(从环境搭建到项目实战,全套高清视频)
- 📚 100本 Python 经典电子书**(包括《Python编程:从入门到实践》《流畅的Python》等豆瓣高分书籍)
> 这些资料是我当初自学时精心收集的,覆盖了从零基础到进阶的所有知识点,配合今天的自动化脚本实战,效果翻倍。
最后的最后
如果你觉得这篇文章对你有帮助,**请不要吝啬你的「赞」和「在看」**,这能帮助更多被重复工作困扰的朋友看到。