
你有没有遇到过这种情况?
每天重复打开Excel、复制粘贴文件、手动发送邮件……
时间都浪费在这些机械性的工作上了。
说实话,我之前也是这样。
直到我学会了用Python写脚本,才发现原来自动化真的能解放双手。
今天整理了25个实用高效的Python自动化脚本,涵盖文件管理、数据处理、通信自动化等场景。
帮你告别重复劳动,效率提升3倍。
往期Python阅读>>
Python 自动化做数据可视化10个示例(含代码),强烈推荐
自动为目录下所有文件添加前缀/后缀或替换关键词:
import osdef 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, shutildownloads_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, datetimedef 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 osimport hashlibdef 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 pddef 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 PdfMergerdef merge_pdfs(pdf_list, output_file): merger = PdfMerger() for pdf in pdf_list: merger.append(pdf) merger.write(output_file)适用场景:合同整合、会议资料整理。
从PDF中提取可编辑文本:
import PyPDF2def 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 pddef csv_to_excel(csv_path, excel_path): df = pd.read_csv(csv_path) df.to_excel(excel_path, index=False)适用场景:数据迁移、报表格式标准化。
自动创建Excel数据透视表:
import pandas as pddef 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 jsondef 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, scheduledef 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, timedef job(): print("执行数据库清理...")schedule.every(3).hours.do(job) # 每3小时执行while True: schedule.run_pending() time.sleep(1)适用场景:定期维护任务。
通过机器人发送工作群通知:
import requestsdef send_wechat_message(webhook_url, message): data = { "msgtype": "text", "text": { "content": message } } requests.post(webhook_url, json=data)适用场景:任务完成提醒、异常报警。
自动发送钉钉群消息:
import requestsdef send_dingtalk_message(webhook_url, content): data = { "msgtype": "text", "text": { "content": content } } requests.post(webhook_url, json=data)适用场景:团队协作通知、进度同步。
调整尺寸和质量以节省空间:
from PIL import Imagedef 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 pyeditvideo = pyedit.VideoFileClip("vid.mp4")final_vid = video.subclip(0, 10).speedx(2) # 截取前10秒并加速2倍final_vid.write_videofile("output.mp4")适用场景:社交媒体内容制作。
一键转换图片格式:
from PIL import Imageimport osdef 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, ImageFontdef 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 requestsfrom bs4 import BeautifulSoupdef 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 socketdef test_connection(host="8.8.8.8", port=53): try: socket.create_connection((host, port), timeout=3) return "连接成功" except OSError: return "连接失败"适用场景:服务器健康检查。
监控网站可用性并报警:
import requestsimport timedef 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 Documentdef 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 pyperclipimport timedef 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 osimport shutildef 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自动化吗?
一旦开始,你会发现效率提升真的是指数级的。
想高效学习Python?下面三本精选好书满足你的不同需求!
《流畅的Python(第2版)》——Python进阶必读!深入讲解高级特性与最佳实践,适合想精进的开发者。
《Python从新手到高手》:初学者首选,系统学习全栈技能。
《Python数据分析:从零基础入门到案例实战》——数据科学利器!手把手教你用Python处理数据,实战案例学完就能用。
三本书均支持先用后付、运费险和7天无理由退货,放心购买!点击“购买”按钮,立即开启你的Python学习之旅吧!
https://ima.qq.com/wiki/?shareId=f2628818f0874da17b71ffa0e5e8408114e7dbad46f1745bbd1cc1365277631c
