15个Python自动化办公脚本:文件、表格与PDF高效处理指南
本文汇总15个高频Python自动化办公脚本,覆盖文件批量整理、表格数据转换、PDF内容提取及图片格式缩放等场景。提供从环境配置到完整代码的运行方案,替代手动重复操作,帮助职场人员快速提升日常数据处理效率。
环境准备与依赖安装
运行以下脚本需提前配置基础运行环境。Windows用户请在安装Python时勾选 Add Python to PATH,macOS/Linux用户直接使用终端即可。
通过 pip 安装脚本所需的常用库。部分库如 pandas 和 Pillow 是核心依赖,确保已正确安装:
pip install pandas openpyxl PyPDF2 Pillow pyperclip
参数说明:
pandas/openpyxl:负责Excel与CSV的读取、清洗与导出。Pillow:处理图像缩放与格式转换。PyPDF2:用于PDF文件的合并与文本解析。pyperclip:跨平台剪贴板读写。
⚠️ 操作风险提示
批量重命名、移动、删除文件或覆盖写入的操作会直接改变磁盘文件结构。请在执行任何脚本前备份目标文件夹,建议先在空目录或仅含测试文件的子目录中验证输出结果,确认无误后再处理重要业务数据。
文件管理与文本处理
第1步:批量替换文件名元素
目的:快速清理文件夹内杂乱的文件名,统一添加前缀或后缀。
参数:设置待处理文件夹路径、旧字符串、新字符串。
动作:遍历目录比对文件名,调用 os.rename 执行替换。
import os
def batch_rename_files(folder_path, old_str, new_str):
try:
for filename in os.listdir(folder_path):
if old_str in filename:
new_filename = filename.replace(old_str, new_str)
old_file_path = os.path.join(folder_path, filename)
new_file_path = os.path.join(folder_path, new_filename)
os.rename(old_file_path, new_file_path)
print(f"文件 '{filename}' 已重命名为 '{new_filename}'")
print("所有文件重命名完成!")
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
folder = "D:/MyDocuments/Photos"
batch_rename_files(folder, "IMG_", "Vacation_")
第2步:按扩展名分类归档
目的:自动识别文件类型并移动到指定分类文件夹,保持桌面整洁。
参数:目标根目录路径。
动作:获取扩展名,动态创建分类子目录,使用 shutil.move 转移文件。
import os
import shutil
def organize_files_by_type(folder_path):
try:
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
if os.path.isfile(file_path):
ext = os.path.splitext(filename)[1].lower()
if not ext: continue
target_folder = os.path.join(folder_path, ext[1:] + "_Files")
os.makedirs(target_folder, exist_ok=True)
shutil.move(file_path, target_folder)
print(f"已移动 '{filename}' 至 '{target_folder}'")
print("分类整理完成!")
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
organize_files_by_type("D:/MyDocuments/Downloads")
第3步:递归清理空文件夹
目的:释放被空目录占用的磁盘空间。
参数:扫描的根目录路径。
动作:自底向上遍历 (topdown=False),检测无内容的目录并执行 os.rmdir。
import os
def delete_empty_folders(folder_path):
deleted_count = 0
for dirpath, dirnames, filenames in os.walk(folder_path, topdown=False):
if not dirnames and not filenames:
try:
os.rmdir(dirpath)
print(f"已删除空文件夹: {dirpath}")
deleted_count += 1
except OSError as e:
print(f"无法删除 {dirpath}: {e}")
return deleted_count
if __name__ == "__main__":
root = "D:/MyDocuments/Temp"
count = delete_empty_folders(root)
print(f"共删除 {count} 个空文件夹。")
第4步:多TXT文件合并
目的:将分散的日志或报告片段整合为单一文件,便于归档分析。
参数:源文件夹路径、输出文件名(默认 merged_output.txt)。
动作:依次打开TXT文件追加写入,自动处理UTF-8与GBK编码兼容。
import os
def merge_txt_files(folder_path, output_filename="merged_output.txt"):
output_path = os.path.join(folder_path, output_filename)
try:
with open(output_path, 'w', encoding='utf-8') as outfile:
for filename in os.listdir(folder_path):
if filename.endswith(".txt") and filename != output_filename:
filepath = os.path.join(folder_path, filename)
try:
with open(filepath, 'r', encoding='utf-8') as infile:
content = infile.read()
except UnicodeDecodeError:
with open(filepath, 'r', encoding='gbk') as infile:
content = infile.read()
outfile.write(f"--- {filename} ---\n{content}\n\n")
print(f"已合并: {filename}")
print(f"合并完成,输出至: {output_path}")
except Exception as e:
print(f"发生错误: {e}")
第5步:全局文本批量替换
目的:快速修正文档中的统一术语、废弃函数名或排版错误。
参数:文件夹路径、查找字符串、替换字符串、文件后缀(如 .py)。
import os
def batch_find_replace(folder_path, old_text, new_text, file_extension=".txt"):
replaced_count = 0
for filename in os.listdir(folder_path):
if filename.endswith(file_extension):
filepath = os.path.join(folder_path, filename)
try:
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
if old_text in content:
with open(filepath, 'w', encoding='utf-8') as f:
f.write(content.replace(old_text, new_text))
replaced_count += 1
print(f"已替换: {filename}")
except Exception as e:
print(f"处理失败 {filename}: {e}")
print(f"批量替换完成,共修改 {replaced_count} 个文件。")
表格数据自动化处理
第6步:CSV转Excel工作簿
目的:将原始CSV数据清洗合并为标准 .xlsx 格式,方便后续共享与图表制作。
参数:CSV文件夹路径、输出Excel名称。
import pandas as pd
import os
def csv_to_excel(csv_folder_path, output_excel_filename="merged_data.xlsx"):
all_data = []
for filename in os.listdir(csv_folder_path):
if filename.endswith(".csv"):
filepath = os.path.join(csv_folder_path, filename)
try:
df = pd.read_csv(filepath, encoding='utf-8')
all_data.append(df)
except UnicodeDecodeError:
df = pd.read_csv(filepath, encoding='gbk')
all_data.append(df)
merged_df = pd.concat(all_data, ignore_index=True)
merged_df.to_excel(os.path.join(csv_folder_path, output_excel_filename), index=False)
print("CSV已成功合并并转为Excel。")
第7步:合并多个Excel文件
目的:将各部门报表按月或按项目汇总至一个工作簿的不同Sheet中。
参数:Excel文件夹路径、输出文件名。
import pandas as pd
import os
def merge_excel_files(excel_folder_path, output_excel_filename="combined_reports.xlsx"):
writer = pd.ExcelWriter(os.path.join(excel_folder_path, output_excel_filename), engine='openpyxl')
for filename in os.listdir(excel_folder_path):
if filename.endswith((".xlsx", ".xls")) and filename != output_excel_filename:
try:
df = pd.read_excel(os.path.join(excel_folder_path, filename))
sheet_name = os.path.splitext(filename)[0][:30]
df.to_excel(writer, sheet_name=sheet_name, index=False)
except Exception as e:
print(f"读取失败: {filename}, {e}")
writer.save()
print("Excel文件合并完成。")
第8步:按需提取Excel筛选数据
目的:根据业务条件(如销售额阈值、地区限制)抽离子集生成独立报表。
参数:输入Excel路径、输出路径、筛选列名与条件值。
import pandas as pd
import os
def extract_data_from_excel(input_path, output_filename="extracted_data.xlsx"):
df = pd.read_excel(input_path)
extracted = df[(df['销售额'] > 5000) & (df['地区'] == '华东')]
out_path = os.path.join(os.path.dirname(input_path), output_filename)
extracted.to_excel(out_path, index=False)
print(f"已提取符合条件的数据并保存至: {out_path}")
图像与PDF文档处理
第9步:批量图片等比例缩放
目的:针对网站配图或缩略图需求,统一调整分辨率以优化加载速度。
参数:图片目录、目标尺寸元组 (宽, 高)。
from PIL import Image
import os
def batch_resize_images(folder_path, size=(800, 600)):
os.makedirs(os.path.join(folder_path, "resized"), exist_ok=True)
for fname in os.listdir(folder_path):
if fname.lower().endswith(('.png','.jpg','.jpeg','.gif','.bmp')):
with Image.open(os.path.join(folder_path, fname)) as img:
img.resize(size).save(os.path.join(folder_path, "resized", fname))
print("图片缩放完成。")
第10步:批量转换图片格式
目的:解决跨平台兼容性或减小文件体积,如 PNG 转 JPEG。
参数:源目录、目标格式字符串(如 "JPEG")。
from PIL import Image
import os
def batch_convert_images(folder_path, target_format="PNG"):
out_dir = os.path.join(folder_path, "converted")
os.makedirs(out_dir, exist_ok=True)
for fname in os.listdir(folder_path):
if not fname.lower().endswith(f'.{target_format.lower()}'):
with Image.open(os.path.join(folder_path, fname)) as img:
base = os.path.splitext(fname)[0]
img.save(os.path.join(out_dir, f"{base}.{target_format.lower()}"), format=target_format)
print(f"已转换格式为: {target_format}")
第14步:多PDF文件合并
目的:将拆分的项目书、合同扫描件拼接为完整文档。
参数:PDF文件夹路径、输出文件名。
from PyPDF2 import PdfMerger
import os
def merge_pdf_files(folder_path, output_filename="merged.pdf"):
merger = PdfMerger()
for f in sorted(os.listdir(folder_path)):
if f.lower().endswith('.pdf'):
merger.append(os.path.join(folder_path, f))
with open(os.path.join(folder_path, output_filename), "wb") as outf:
merger.write(outf)
merger.close()
print(f"PDF合并完成: {output_filename}")
第15步:PDF纯文本内容抓取
目的:解除PDF排版限制,提取可编辑文本用于检索或数据分析。
参数:单个或多个PDF路径列表。
from PyPDF2 import PdfReader
import os
def extract_pdf_text(pdf_path, output_txt=None):
if not output_txt: output_txt = os.path.splitext(pdf_path)[0] + "_text.txt"
text_content = ""
with open(pdf_path, "rb") as f:
for page in PdfReader(f).pages:
text_content += page.extract_text() + "\n"
with open(output_txt, "w", encoding="utf-8") as out:
out.write(text_content)
print(f"文本已提取至: {output_txt}")
系统辅助与定时任务
第11步:一键批量启动网页
目的:减少早晨开工或查阅资料时的重复点击操作。
参数:包含URL地址的列表。
import webbrowser
import time
def open_websites(urls):
for url in urls:
webbrowser.open_new_tab(url)
time.sleep(1)
print("已批量打开指定网页。")
# 调用示例: open_websites(["https://www.google.com", "https://github.com"])
第12步:定时屏幕/控制台提醒
目的:防止久坐疲劳或错过会议截止点。
参数:等待分钟数、提醒文案。
import time
def set_timer_reminder(minutes, message):
seconds = minutes * 60
time.sleep(seconds)
print(f"\n{'='*30}\n提醒: {message}\n{'='*30}\n")
set_timer_reminder(45, "该喝水休息了!")
第13步:剪贴板自动读写
目的:实现表单批量填充或日志快速复制,免去鼠标选中拖拽。
参数:传入待粘贴的字符串。
import pyperclip
def clipboard_ops():
text = "自动化办公脚本已就绪"
pyperclip.copy(text)
print(f"已写入剪贴板: {pyperclip.paste()}")
clipboard_ops()
常见问题排查
ModuleNotFoundError(模块缺失):检查是否漏装依赖。使用 pip install 库名 补全后重启IDE。
FileNotFoundError / PermissionError(路径或权限错误):Windows绝对路径建议使用正斜杠(如 C:/Data/)或原始字符串 r'C:\Data\'。避免在受保护的系统目录(如 C:\Windows)直接运行读写脚本。
UnicodeDecodeError(编码报错):中文文档常使用 GBK 编码。在 open() 或 pd.read_csv() 中显式指定 encoding='gbk' 即可解决。
文件占用无法移动/删除:关闭Excel、Word或图片查看器中打开的目标文件,释放句柄后重试。
总结
以上15个Python自动化办公脚本覆盖了文件整理、表格处理、图文转换及系统辅助四大核心办公场景。通过组合使用 pandas、Pillow、PyPDF2 等成熟生态库,配合基础的操作系统接口,能够快速替代繁琐的手动核对与格式转换工作。建议根据实际业务频率选择高频痛点脚本进行参数调优,并可结合操作系统自带的定时计划任务(Windows任务计划程序或Linux Cron)实现无人值守的夜间批处理。以上就是Python自动化办公脚本大全:文件表格PDF高效处理指南的详细内容,更多关于Python提效工具的实用技巧与代码实例请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













