当前位置:首页>python>Python自动化办公:10个实用脚本提升效率

Python自动化办公:10个实用脚本提升效率

  • 2026-09-26 22:24:55
Python自动化办公:10个实用脚本提升效率

告别重复劳动,让Python帮你完成80%的办公自动化任务

你好,我是效率科技派。在上一篇文章中,我们探讨了Excel数据处理技巧。今天,我要分享更强大的工具——Python自动化办公。
无论你是行政、财务、运营还是产品经理,掌握Python自动化都能让你的工作效率提升数倍。下面这10个实用脚本,你可以直接复制使用。

## 1. 批量重命名文件

**场景**:整理照片、文档时,需要统一命名格式
```python
import os
def batch_rename(folder_path, prefix="file_"):
"""
批量重命名文件夹内的文件
:param folder_path: 文件夹路径
:param prefix: 文件名前缀
"""
files = os.listdir(folder_path)
for i, filename in enumerate(files, 1):

获取文件扩展名

ext = os.path.splitext(filename)[1]

新文件名

new_name = f"{prefix}{i:03d}{ext}"

重命名

os.rename(
os.path.join(folder_path, filename),
os.path.join(folder_path, new_name)
)
print(f"重命名: {filename} -> {new_name}")

使用示例

batch_rename("/path/to/your/folder", "photo_")
```

## 2. Excel数据合并

**场景**:多个Excel文件需要合并成一个
```python
import pandas as pd
import os
def merge_excel_files(folder_path, output_file="merged.xlsx"):
"""
合并文件夹内所有Excel文件
"""
all_data = []
for file in os.listdir(folder_path):
if file.endswith(('.xlsx', '.xls')):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
all_data.append(df)

合并所有数据

merged_df = pd.concat(all_data, ignore_index=True)

保存到新文件

merged_df.to_excel(output_file, index=False)
print(f"合并完成!保存为: {output_file}")

使用示例

merge_excel_files("./excel_files")
```

## 3. 自动发送邮件

**场景**:定期发送周报、通知等
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(subject, content, to_emails, from_email, password):
"""
发送邮件
"""

创建邮件

msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = from_email
msg['To'] = ', '.join(to_emails)

添加正文

msg.attach(MIMEText(content, 'plain', 'utf-8'))

发送邮件(以QQ邮箱为例)

try:
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login(from_email, password)
server.send_message(msg)
server.quit()
print("邮件发送成功!")
except Exception as e:
print(f"发送失败: {e}")

使用示例(需要开启SMTP服务)

send_email(

subject="本周工作报告",

content="这是本周的工作总结...",

to_emails=["recipient@example.com"],

from_email="your_email@qq.com",

password="your_smtp_password"

)

```

## 4. PDF批量处理

**场景**:合并多个PDF文件,或提取特定页面
```python
from PyPDF2 import PdfMerger, PdfReader, PdfWriter
def merge_pdfs(pdf_files, output_file="merged.pdf"):
"""
合并多个PDF文件
"""
merger = PdfMerger()
for pdf in pdf_files:
merger.append(pdf)
merger.write(output_file)
merger.close()
print(f"PDF合并完成: {output_file}")
def extract_pages(input_pdf, pages, output_file="extracted.pdf"):
"""
提取PDF的特定页面
:param pages: 要提取的页码列表,如[1, 3, 5]
"""
reader = PdfReader(input_pdf)
writer = PdfWriter()
for page_num in pages:
writer.add_page(reader.pages[page_num-1])
with open(output_file, "wb") as output_pdf:
writer.write(output_pdf)
print(f"页面提取完成: {output_file}")

使用示例

merge_pdfs(["file1.pdf", "file2.pdf", "file3.pdf"])

extract_pages("report.pdf", [1, 3, 5])

```

## 5. 网页数据抓取

**场景**:收集竞品信息、价格监控等
```python
import requests
from bs4 import BeautifulSoup
def scrape_website(url, selector):
"""
抓取网页数据
"""
try:

发送请求

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()

解析HTML

soup = BeautifulSoup(response.text, 'html.parser')

根据选择器提取数据

elements = soup.select(selector)
results = [elem.get_text(strip=True) for elem in elements]
return results
except Exception as e:
print(f"抓取失败: {e}")
return []

使用示例

titles = scrape_website("https://example.com", "h2.title")

print(titles)

```

## 6. 图片批量处理

**场景**:批量调整图片大小、格式转换
```python
from PIL import Image
import os
def batch_resize_images(folder_path, size=(800, 600)):
"""
批量调整图片大小
"""
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
img_path = os.path.join(folder_path, filename)
try:
with Image.open(img_path) as img:

调整大小

img_resized = img.resize(size, Image.Resampling.LANCZOS)

保存(在原文件名前加"resized_")

new_filename = f"resized_{filename}"
new_path = os.path.join(folder_path, new_filename)
img_resized.save(new_path)
print(f"处理完成: {filename}")
except Exception as e:
print(f"处理失败 {filename}: {e}")

使用示例

batch_resize_images("./photos", (1200, 800))

```

## 7. 数据备份脚本

**场景**:自动备份重要文件到指定位置
```python
import shutil
import os
from datetime import datetime
def backup_files(source_dir, backup_dir):
"""
备份文件夹
"""

创建备份目录(带时间戳)

timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
backup_path = os.path.join(backup_dir, f"backup_{timestamp}")
try:

复制整个文件夹

shutil.copytree(source_dir, backup_path)
print(f"备份成功: {backup_path}")
return backup_path
except Exception as e:
print(f"备份失败: {e}")
return None

使用示例

backup_files("/important/documents", "/backup/location")

```

## 8. 定时任务执行

**场景**:每天固定时间执行特定任务
```python
import schedule
import time
from datetime import datetime
def daily_report():
"""每日报告任务"""
print(f"[{datetime.now()}] 正在生成每日报告...")

这里可以调用其他函数,如发送邮件、处理数据等

def weekly_backup():
"""每周备份任务"""
print(f"[{datetime.now()}] 正在执行每周备份...")

设置定时任务

schedule.every().day.at("09:00").do(daily_report)
schedule.every().monday.at("18:00").do(weekly_backup)
print("定时任务已启动,按Ctrl+C停止")

运行调度器

while True:
schedule.run_pending()
time.sleep(60)

每分钟检查一次

```

## 9. 数据清洗与转换

**场景**:处理脏数据,格式标准化
```python
import pandas as pd
import re
def clean_data(df):
"""
数据清洗函数
"""

1. 删除空值

df_clean = df.dropna()

2. 去除字符串空格

str_cols = df_clean.select_dtypes(include=['object']).columns
for col in str_cols:
df_clean[col] = df_clean[col].str.strip()

3. 标准化电话号码格式

if 'phone' in df_clean.columns:
df_clean['phone'] = df_clean['phone'].apply(
lambda x: re.sub(r'\D', '', str(x))
)

4. 日期格式标准化

if 'date' in df_clean.columns:
df_clean['date'] = pd.to_datetime(df_clean['date'], errors='coerce')
return df_clean

使用示例

df = pd.read_csv("dirty_data.csv")

clean_df = clean_data(df)

clean_df.to_csv("clean_data.csv", index=False)

```

## 10. 自动化报告生成

**场景**:自动生成数据分析报告
```python
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
def generate_report(data_file, output_file="report.html"):
"""
生成HTML格式的报告
"""

读取数据

df = pd.read_csv(data_file)

生成统计信息

stats = {
"记录数": len(df),
"列数": len(df.columns),
"数据时间段": f"{df['date'].min()} 至 {df['date'].max()}",
"数值列统计": df.describe().to_html()
}

创建图表

plt.figure(figsize=(10, 6))
if 'value' in df.columns and 'date' in df.columns:
df.plot(x='date', y='value', kind='line')
plt.title("数据趋势图")
chart_file = "chart.png"
plt.savefig(chart_file)
plt.close()

生成HTML报告

html_content = f"""
数据分析报告 - {datetime.now().strftime('%Y-%m-%d')}
body {{ font-family: Arial, sans-serif; margin: 40px; }}
h1 {{ color:#333; }}
.stat {{ background:#f5f5f5; padding: 15px; margin: 10px 0; }}
数据分析报告
生成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
数据概览
总记录数: {stats['记录数']}
数据列数: {stats['列数']}
时间段: {stats['数据时间段']}
详细统计
{stats['数值列统计']}
{'' if 'chart_file' in locals() else ''}
"""

保存报告

with open(output_file, 'w', encoding='utf-8') as f:
f.write(html_content)
print(f"报告生成完成: {output_file}")

使用示例

generate_report("sales_data.csv")

```

## 如何开始使用这些脚本?

### 第一步:安装Python环境

1. 访问 [python.org](https://www.python.org) 下载Python 3.8+
2. 安装时勾选"Add Python to PATH"

### 第二步:安装必要库

```bash
pip install pandas openpyxl PyPDF2 pillow requests beautifulsoup4 schedule matplotlib
```

### 第三步:复制脚本使用

1. 将需要的脚本复制到.py文件中
2. 修改文件路径等参数
3. 运行:`python your_script.py`

## 进阶学习建议

  1. **系统学习**:推荐《Python编程:从入门到实践》
  2. **实战项目**:从自动化小任务开始,逐步复杂化
  3. **社区交流**:加入Python学习群,交流经验

## 结语

Python自动化办公不是遥不可及的技术,而是可以立即应用的实用技能。从今天介绍的10个脚本开始,你会发现原来需要数小时的工作,现在几分钟就能完成。
**记住**:最好的学习方式是实践。选一个最困扰你的重复性任务,用Python解决它!
---
**下期预告**:明天我们将分享《办公软件快捷键大全》,让你掌握效率翻倍的秘密武器!
**互动话题**:你工作中最想自动化的任务是什么?欢迎在评论区留言!
---
*本文为"效率科技派"原创,转载请注明出处。*
*关注公众号,获取更多办公效率技巧!*

最新文章

随机文章