
你有没有遇到过这种情况?
每天重复打开Excel、复制粘贴文件、手动发送邮件……
时间都浪费在这些机械性的工作上了。
说实话,我之前也是这样。
直到我学会了用Python写脚本,才发现原来自动化真的能解放双手。
今天整理了25个实用高效的Python自动化脚本,涵盖文件管理、数据处理、通信自动化等场景。
帮你告别重复劳动,效率提升3倍。
自动为目录下所有文件添加前缀/后缀或替换关键词:
import os
def batch_rename(path, old_str, new_str):
for file in os.listdir(path):
if old_str in file:
new_name = file.replace(old_str, new_str)
os.rename(os.path.join(path, file), os.path.join(path, new_name))
适用场景:整理下载文件夹、标准化命名。
按扩展名自动分类文件(如图片、文档):
import os, shutil
downloads_folder = "/path/to/downloads"
extensions = {"图片": [".jpg", ".png"], "文档": [".pdf", ".docx"]}
for file in os.listdir(downloads_folder):
for folder, exts in extensions.items():
if any(file.endswith(ext) for ext in exts):
dest_folder = os.path.join(downloads_folder, folder)
os.makedirs(dest_folder, exist_ok=True)
shutil.move(os.path.join(downloads_folder, file), dest_folder)
适用场景:清理杂乱下载目录。
带时间戳的目录备份,防止数据丢失:
import shutil, datetime
def backup_folder(source, dest):
timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
backup_path = os.path.join(dest, f"backup_{timestamp}")
shutil.copytree(source, backup_path)
适用场景:关键数据定期备份。
扫描并删除重复文件,释放磁盘空间:
import os
import hashlib
def get_file_hash(filepath):
with open(filepath, 'rb') as f:
return hashlib.md5(f.read()).hexdigest()
def find_duplicates(directory):
hashes = {}
duplicates = []
for root, _, files in os.walk(directory):
for file in files:
filepath = os.path.join(root, file)
file_hash = get_file_hash(filepath)
if file_hash in hashes:
duplicates.append(filepath)
else:
hashes[file_hash] = filepath
return duplicates
适用场景:清理照片库、文档备份。
整合多个Excel文件数据到单一表格:
import pandas as pd
def merge_excel(folder_path, output_file):
all_data = pd.DataFrame()
for file in os.listdir(folder_path):
if file.endswith('.xlsx'):
df = pd.read_excel(os.path.join(folder_path, file))
all_data = pd.concat([all_data, df])
all_data.to_excel(output_file, index=False)
适用场景:财务报告整合、销售数据汇总。
合并多个PDF文件为单一文档:
from PyPDF2 import PdfMerger
def merge_pdfs(pdf_list, output_file):
merger = PdfMerger()
for pdf in pdf_list:
merger.append(pdf)
merger.write(output_file)
适用场景:合同整合、会议资料整理。
从PDF中提取可编辑文本:
import PyPDF2
def extract_text(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
return "\n".join(page.extract_text() for page in reader.pages)
适用场景:合同内容分析、报告数据复用。
自动化格式转换(需pandas库):
import pandas as pd
def csv_to_excel(csv_path, excel_path):
df = pd.read_csv(csv_path)
df.to_excel(excel_path, index=False)
适用场景:数据迁移、报表格式标准化。
自动创建Excel数据透视表:
import pandas as pd
def create_pivot_table(data_file, output_file):
df = pd.read_excel(data_file)
pivot = df.pivot_table(
values='sales',
index='category',
columns='month',
aggfunc='sum',
fill_value=0
)
pivot.to_excel(output_file)
适用场景:销售分析、业务报表自动化。
批量清洗和转换JSON数据:
import json
def clean_json(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as f:
data = json.load(f)
cleaned_data = []
for item in data:
if item.get('value') and item['value'] > 0:
cleaned_data.append({
'id': item.get('id'),
'name': item.get('name', '未知').strip(),
'value': round(item['value'], 2)
})
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(cleaned_data, f, ensure_ascii=False, indent=2)
适用场景:API数据清洗、配置文件整理。
自动发送日报或通知(需schedule库):
import smtplib, schedule
def send_daily_report():
msg = MIMEText("今日报告内容...")
msg['Subject'] = '每日报告'
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login('your_email@gmail.com', 'password')
server.sendmail(sender, receiver, msg.as_string())
schedule.every().day.at("08:00").do(send_daily_report)
适用场景:自动化日报推送。
定时运行指定任务(如数据清理):
import schedule, time
def job():
print("执行数据库清理...")
schedule.every(3).hours.do(job) # 每3小时执行
while True:
schedule.run_pending()
time.sleep(1)
适用场景:定期维护任务。
通过机器人发送工作群通知:
import requests
def send_wechat_message(webhook_url, message):
data = {
"msgtype": "text",
"text": {
"content": message
}
}
requests.post(webhook_url, json=data)
适用场景:任务完成提醒、异常报警。
自动发送钉钉群消息:
import requests
def send_dingtalk_message(webhook_url, content):
data = {
"msgtype": "text",
"text": {
"content": content
}
}
requests.post(webhook_url, json=data)
适用场景:团队协作通知、进度同步。
调整尺寸和质量以节省空间:
from PIL import Image
def compress_image(input_path, output_path, quality=85):
img = Image.open(input_path)
if max(img.size) > 1200:
img.thumbnail((1200, 1200))
img.save(output_path, quality=quality, optimize=True)
适用场景:网站图片优化、邮件附件压缩。
拼接/加速视频(需moviepy库):
import moviepy.editor as pyedit
video = pyedit.VideoFileClip("vid.mp4")
final_vid = video.subclip(0, 10).speedx(2) # 截取前10秒并加速2倍
final_vid.write_videofile("output.mp4")
适用场景:社交媒体内容制作。
一键转换图片格式:
from PIL import Image
import os
def convert_images(folder, from_format, to_format):
for file in os.listdir(folder):
if file.endswith(from_format):
img = Image.open(os.path.join(folder, file))
new_name = file.replace(from_format, to_format)
img.save(os.path.join(folder, new_name))
适用场景:PNG转JPG、WebP转换。
自动为图片添加水印:
from PIL import Image, ImageDraw, ImageFont
def add_watermark(input_path, output_path, watermark_text):
img = Image.open(input_path)
draw = ImageDraw.Draw(img)
# 添加水印文字
draw.text((10, 10), watermark_text, fill=(255, 255, 255))
img.save(output_path)
适用场景:版权保护、品牌标识。
自动采集网站信息(如新闻标题):
import requests
from bs4 import BeautifulSoup
def scrape_news(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return [h2.text for h2 in soup.find_all('h2')]
适用场景:竞品监控、数据聚合。
快速筛选日志中的错误信息:
def analyze_log(log_file):
with open(log_file, 'r') as f:
return [line for line in f if "ERROR" in line]
适用场景:系统故障排查。
检测服务端口可用性:
import socket
def test_connection(host="8.8.8.8", port=53):
try:
socket.create_connection((host, port), timeout=3)
return "连接成功"
except OSError:
return "连接失败"
适用场景:服务器健康检查。
监控网站可用性并报警:
import requests
import time
def monitor_website(url, check_interval=60):
while True:
try:
response = requests.get(url, timeout=10)
if response.status_code != 200:
send_alert(f"网站异常: {url}")
except Exception as e:
send_alert(f"连接失败: {str(e)}")
time.sleep(check_interval)
适用场景:业务系统监控、服务可用性检测。
自动修改文档内容(需python-docx库):
from docx import Document
def update_word_doc(file_path, old_text, new_text):
doc = Document(file_path)
for para in doc.paragraphs:
if old_text in para.text:
para.text = para.text.replace(old_text, new_text)
doc.save('updated.docx')
适用场景:合同模板更新、报告标准化。
记录和管理剪贴板历史:
import pyperclip
import time
def clipboard_monitor():
last_content = ""
while True:
current_content = pyperclip.paste()
if current_content != last_content:
save_to_history(current_content)
last_content = current_content
time.sleep(1)
适用场景:多内容复制粘贴、历史记录管理。
自动同步两个文件夹内容:
import os
import shutil
def sync_folders(source, destination):
for root, dirs, files in os.walk(source):
for file in files:
src_file = os.path.join(root, file)
relative_path = os.path.relpath(src_file, source)
dest_file = os.path.join(destination, relative_path)
os.makedirs(os.path.dirname(dest_file), exist_ok=True)
if not os.path.exists(dest_file):
shutil.copy2(src_file, dest_file)
适用场景:多设备数据同步、备份文件更新。
这些脚本覆盖了日常办公中80%的重复性工作,平均可提升3倍效率。建议从文件整理和备份脚本入手,逐步扩展至复杂场景如数据抓取和报告生成。
说实话,学会写脚本只是第一步。
更重要的是培养自动化的思维。
每次遇到重复工作时,先想想:这个能用Python自动化吗?
一旦开始,你会发现效率提升真的是指数级的。
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!