用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分钟写个脚本。你会发现:写代码的时间,可能比手动操作节省的时间还要少得多!这就是编程的魅力所在~

### Python 自动化办公案例展示 #### 案例 1: Excel 数据处理脚本 通过 `pandas` 库读取、修改并保存 Excel 文件,实现批量数据处理。 ```python import pandas as pd df = pd.read_excel('data.xlsx') # 对数据进行操作... df.to_excel('output.xlsx', index=False) ``` #### 案例 2: Word 文档自动生成报告 利用 `docx` 库创建带有图表和表格的专业文档。 ```python from docx import Document document = Document() document.add_heading('月度销售总结', level=1) table = document.add_table(rows=1, cols=3) # 添加内容到表格中... document.save('report.docx') ``` #### 案例 3: PDF 合并与拆分工具 借助 `PyPDF2` 实现多个 PDF 的合并或单个文件的分割功能[^1]。 #### 案例 4: 邮件群发助手 基于 SMTP 协议发送个性化邮件给不同收件人列表中的成员。 ```python import smtplib server = smtplib.SMTP('smtp.example.com') for recipient in recipients_list: server.sendmail(sender_email, recipient, message_body) server.quit() ``` #### 案例 5: 日历事件同步器 连接 Google Calendar API 或 Outlook Calendar 接口完成日程安排自动化管理[^2]。 #### 案例 6: 图像批处理程序 使用 OpenCV 进行图片格式转换、尺寸调整以及水印添加等操作。 ```python import cv2 img = cv2.imread('input.jpg') resized_img = cv2.resize(img, (new_width, new_height)) cv2.imwrite('output.png', resized_img) ``` #### 案例 7: PowerPoint 幻灯片制作机器人 调用 python-pptx 创建演示文稿,并支持幻灯片模板应用及动画效果设置。 ```python from pptx import Presentation prs = Presentation(template_path) slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(slide_layout) # 设置幻灯片内容... prs.save('presentation.pptx') ``` #### 案例 8: FTP 文件上传下载客户端 构建简单的FTP服务器交互应用程序用于远程传输文件资源。 ```python from ftplib import FTP ftp = FTP(host='example.com') with open(local_file, 'rb') as f: ftp.storbinary(f'STOR {remote_filename}', fp=f) ftp.quit() ``` #### 案例 9: OCR 文字识别服务集成 结合 Tesseract 工具包提取扫描图像内的文字信息以便后续编辑加工。 ```python import pytesseract text = pytesseract.image_to_string(image, lang='chi_sim') print(text.strip()) ``` #### 案例 10: 财务报表生成器 根据预定义模版快速汇总各类财务指标形成结构化的电子表格形式输出。 ```python template_df = pd.DataFrame(columns=['科目名称','本期金额']) final_report = template_df.append(new_data_rows) final_report.to_csv('financial_statement.csv', encoding='utf-8-sig') ``` #### 案例 11: 定时提醒闹钟设定 开发跨平台桌面通知插件,在指定时间触发声音提示或者弹窗显示重要事项提醒[^3]。 #### 案例 12: 网页抓取新闻资讯聚合 编写网络爬虫采集各大网站最新动态更新至本地数据库供内部查阅参考。 ```python import requests response = requests.get(url=news_page_url) html_content = response.text # 解析 HTML 获取所需文章链接... ``` #### 案例 13: 社交媒体营销活动监控面板 对接微博、微信公众号接口统计粉丝增长趋势、互动量变化情况绘制可视化图表辅助决策制定。 #### 案例 14: ERP 系统订单状态跟踪查询 建立 RESTful Web Service 查询企业内部管理系统内特定客户订单流转进度详情记录。 #### 案例 15: CRM 客户关系维护聊天机器人 训练自然语言理解模型解析用户提问意图并通过即时通讯软件提供针对性解答建议。 #### 案例 16: HR 员工考勤打卡签退登记表单设计 采用 Flask/Django 开发在线填报页面收集员工每日上下班刷卡时间戳录入HRIS系统存档备案。 #### 案例 17: IT 设备资产管理清单编制 运用 SQLite/MySQL 存储公司固定资产编号、购置日期、折旧年限等相关参数便于定期盘点核查资产状况。 #### 案例 18: 法律文书校验纠错辅助工具 引入正则表达式规则库检测合同条款表述准确性防止因措辞不当引发法律纠纷风险隐患。 #### 案例 19: 教育培训机构课程排课调度算法优化 研究遗传算法原理应用于教室分配、教师授课时段规划等问题提高教学资源配置效率降低运营成本支出。 #### 案例 20: 物流运输路线规划模拟仿真 搭建 GIS 地理信息系统环境计算最优配送路径减少车辆行驶里程节省燃油消耗费用开支。 #### 案例 21: 医疗机构挂号预约服务平台建设 整合医院HIS核心业务流程打造便捷高效的线上就医咨询入口改善患者就诊体验满意度评价体系。 #### 案例 22: 政府部门信息公开发布门户运维保障 遵循政府网站建设标准规范确保政务公开透明度满足公众知情权需求促进社会和谐稳定发展局面形成。 #### 案例 23: 科研项目申报材料审核评分机制探索实践 参照同行评议方法论框架评估科研成果质量水平为评审专家打分提供科学依据支撑学术诚信体系建设工作推进落实到位。 #### 案例 24: 新闻传媒行业舆情监测预警应急响应预案演练 部署大数据分析引擎实时捕捉互联网舆论热点话题演变轨迹提前做好危机公关准备工作有效应对突发公共事件带来的负面影响冲击挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值