用Python解放双手!5个超实用的自动化办公脚本(附详细代码)

一、为什么要让Python帮你打工?

还记得上个月我手动整理500份Excel表格时的惨状吗?(键盘都要敲出火星子了!)直到我发现用Python只需要3行代码就能搞定,才发现自己白白浪费了整整两天时间!

自动化办公的核心逻辑其实很简单:

  1. 让程序模拟人工操作
  2. 批量处理重复性工作
  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()获取坐标
  • 每个步骤都要加适当的延迟
  • 最好先录屏记录操作流程

七、避坑指南

我在自动化实践中踩过的坑:

  1. 文件路径问题(建议使用os.path处理路径)
  2. 编码问题导致乱码(统一使用utf-8编码)
  3. 程序运行权限问题(特别是操作系统文件时)
  4. 网页自动化时的元素定位失败(优先用XPath)
  5. 邮件发送被识别为垃圾邮件(配置SPF记录)

进阶学习路线:

  1. 掌握常用库:pandas/openpyxl/PyPDF2
  2. 学习自动化框架:Selenium/Playwright
  3. 了解定时任务:APScheduler/crontab
  4. 开发GUI界面:PyQt/Tkinter
  5. 打包成exe:PyInstaller

(重要提醒:自动化脚本不要用于敏感操作!操作前务必备份数据)

下次遇到重复性工作时,不妨先花10分钟写个脚本。你会发现:写代码的时间,可能比手动操作节省的时间还要少得多!这就是编程的魅力所在~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值