文章目录
一、为什么要让Python帮你打工?
还记得上个月我手动整理500份Excel表格时的惨状吗?(键盘都要敲出火星子了!)直到我发现用Python只需要3行代码就能搞定,才发现自己白白浪费了整整两天时间!
自动化办公的核心逻辑其实很简单:
- 让程序模拟人工操作
- 批量处理重复性工作
- 设置触发条件自动执行
(注意:以下脚本都需要安装对应库,建议先创建虚拟环境)
二、文件整理小能手
1. 自动归类文件脚本
import os
import shutil
def auto_organize(folder_path):
# 创建分类文件夹
categories = {
'文档': ['.pdf', '.docx', '.txt'],
'图片': ['.jpg', '.png', '.gif'],
'压缩包': ['.zip', '.rar']
}
for category in categories:
os.makedirs(os.path.join(folder_path, category), exist_ok=True)
# 遍历文件并移动
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()
for category, extensions in categories.items():
if ext in extensions:
dest = os.path.join(folder_path, category, filename)
shutil.move(file_path, dest)
print(f"已移动 {filename} -> {category}/")
break
# 使用示例
auto_organize("/Users/你的名字/桌面/混乱的文件夹")
运行效果:
- 自动创建文档/图片/压缩包文件夹
- 根据扩展名归类文件
- 支持自定义分类规则(可以自己修改categories字典)
三、Excel处理神器
2. 批量合并Excel表格
import pandas as pd
import os
def merge_excels(folder_path, output_file):
all_data = []
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
all_data.append(df)
combined_df = pd.concat(all_data)
combined_df.to_excel(output_file, index=False)
print(f"成功合并 {len(all_data)} 个文件 -> {output_file}")
# 使用示例
merge_excels('./销售报表', '全年总销售额.xlsx')
实用技巧:
- 支持处理不同表头(自动对齐列名)
- 处理速度是手动操作的100倍+
- 可以添加数据清洗逻辑(比如过滤无效数据)
四、邮件自动发送器
3. 定时发送邮件脚本
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
import schedule
import time
def send_email():
# 配置信息
sender = 'your_email@163.com'
password = '你的授权码' # 注意不是登录密码!
receiver = 'boss@company.com'
# 创建邮件内容
msg = MIMEText(f"这是{datetime.today().strftime('%Y-%m-%d')}的日报...")
msg['Subject'] = '每日工作报告'
msg['From'] = sender
msg['To'] = receiver
# 发送邮件
with smtplib.SMTP_SSL('smtp.163.com', 465) as server:
server.login(sender, password)
server.sendmail(sender, [receiver], msg.as_string())
print("邮件发送成功!")
# 设置每天17:30自动执行
schedule.every().day.at("17:30").do(send_email)
while True:
schedule.run_pending()
time.sleep(60)
重要提示:
- 需要使用SMTP服务商的授权码
- 163/QQ邮箱都支持这种方式
- 可以添加附件发送功能(使用MIMEMultipart)
五、PDF处理大师
4. PDF批量加水印
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
import io
def add_watermark(input_pdf, output_pdf, watermark_text):
# 创建水印层
packet = io.BytesIO()
c = canvas.Canvas(packet)
c.setFont("Helvetica", 40)
c.setFillGray(0.5, 0.5) # 半透明灰色
c.rotate(45)
c.drawString(200, 100, watermark_text)
c.save()
# 合并水印
watermark = PdfReader(io.BytesIO(packet.getvalue())).pages[0]
writer = PdfWriter()
reader = PdfReader(input_pdf)
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open(output_pdf, "wb") as f:
writer.write(f)
# 批量处理示例
for i in range(1, 50):
add_watermark(f'合同_{i}.pdf', f'带水印合同_{i}.pdf', '机密文件')
扩展功能:
- 调整水印位置/透明度/字体
- 添加图片水印(使用drawImage)
- 自动遍历文件夹处理所有PDF
六、终极自动化方案
5. 全自动办公机器人
import os
import time
import pyautogui
def office_bot():
# 自动打开软件
os.system("open -a /Applications/钉钉.app")
time.sleep(5) # 等待启动
# 模拟键盘操作
pyautogui.hotkey('command', 'n') # 新建聊天
pyautogui.write('老板')
pyautogui.press('enter')
time.sleep(2)
# 发送文件
pyautogui.write('这是今日报表,请查收')
pyautogui.hotkey('command', 'o') # 打开文件选择
time.sleep(3)
pyautogui.write('/Users/你的名字/日报.xlsx')
pyautogui.press('enter')
# 点击发送
pyautogui.click(x=1350, y=980) # 坐标需要自行校准
# 注意:需要提前校准屏幕坐标!
操作建议:
- 使用pyautogui.mouseInfo()获取坐标
- 每个步骤都要加适当的延迟
- 最好先录屏记录操作流程
七、避坑指南
我在自动化实践中踩过的坑:
- 文件路径问题(建议使用os.path处理路径)
- 编码问题导致乱码(统一使用utf-8编码)
- 程序运行权限问题(特别是操作系统文件时)
- 网页自动化时的元素定位失败(优先用XPath)
- 邮件发送被识别为垃圾邮件(配置SPF记录)
进阶学习路线:
- 掌握常用库:pandas/openpyxl/PyPDF2
- 学习自动化框架:Selenium/Playwright
- 了解定时任务:APScheduler/crontab
- 开发GUI界面:PyQt/Tkinter
- 打包成exe:PyInstaller
(重要提醒:自动化脚本不要用于敏感操作!操作前务必备份数据)
下次遇到重复性工作时,不妨先花10分钟写个脚本。你会发现:写代码的时间,可能比手动操作节省的时间还要少得多!这就是编程的魅力所在~