声明:本文为个人学习与工作经验总结,所有脚本均经过实际测试,旨在帮助开发者提高工作效率。如有疑问欢迎交流讨论。
作为程序员,我们每天都会遇到很多重复繁琐的工作:批量重命名文件、整理下载文件夹、发送邮件、处理 Excel 数据…… 这些工作不仅浪费时间,还容易出错。
Python 作为一门简单易用的脚本语言,是解决这些问题的最佳选择。今天我就为大家分享 5 个开箱即用的 Python 自动化脚本,覆盖日常工作中最常见的场景,让你从此告别重复劳动。
一、批量重命名文件
下载文件夹里总是一堆乱七八糟的文件名?这个脚本可以帮你批量重命名指定文件夹下的所有文件,支持添加前缀、后缀和序号。
python
运行
import os def batch_rename_files(folder_path, prefix="file", start_num=1): """ 批量重命名文件夹中的所有文件 :param folder_path: 文件夹路径 :param prefix: 文件名前缀 :param start_num: 起始序号 """ # 获取文件夹中的所有文件 files = os.listdir(folder_path) for index, filename in enumerate(files, start=start_num): # 构建旧文件路径和新文件路径 old_path = os.path.join(folder_path, filename) # 跳过文件夹 if os.path.isdir(old_path): continue # 获取文件扩展名 file_ext = os.path.splitext(filename)[1] # 构建新文件名 new_filename = f"{prefix}_{index:03d}{file_ext}" new_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_path, new_path) print(f"重命名: {filename} -> {new_filename}") # 使用示例 if __name__ == "__main__": folder = "./downloads" # 替换为你的文件夹路径 batch_rename_files(folder, prefix="document", start_num=1) print("批量重命名完成!")二、自动整理下载文件夹
下载文件夹总是杂乱无章?这个脚本可以根据文件类型自动将文件分类到不同的文件夹中。
python
运行
import os import shutil def organize_download_folder(folder_path): """ 自动整理下载文件夹,按文件类型分类 :param folder_path: 下载文件夹路径 """ # 定义文件类型和对应的文件夹 file_types = { "图片": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg"], "文档": [".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt"], "视频": [".mp4", ".avi", ".mov", ".mkv", ".flv"], "音频": [".mp3", ".wav", ".flac", ".aac"], "压缩包": [".zip", ".rar", ".7z", ".tar", ".gz"], "程序": [".exe", ".msi", ".dmg", ".pkg", ".deb"] } # 创建分类文件夹 for folder in file_types.keys(): folder_full_path = os.path.join(folder_path, folder) if not os.path.exists(folder_full_path): os.makedirs(folder_full_path) # 创建其他文件夹 others_folder = os.path.join(folder_path, "其他") if not os.path.exists(others_folder): os.makedirs(others_folder) # 遍历所有文件 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # 跳过文件夹 if os.path.isdir(file_path): continue # 获取文件扩展名 file_ext = os.path.splitext(filename)[1].lower() # 移动文件到对应的文件夹 moved = False for folder, extensions in file_types.items(): if file_ext in extensions: dest_path = os.path.join(folder_path, folder, filename) shutil.move(file_path, dest_path) print(f"移动: {filename} -> {folder}") moved = True break # 移动到其他文件夹 if not moved: dest_path = os.path.join(others_folder, filename) shutil.move(file_path, dest_path) print(f"移动: {filename} -> 其他") # 使用示例 if __name__ == "__main__": download_folder = os.path.expanduser("~/Downloads") # 系统默认下载文件夹 organize_download_folder(download_folder) print("下载文件夹整理完成!")三、批量处理 Excel 数据
需要处理大量 Excel 文件?这个脚本可以帮你批量读取多个 Excel 文件,合并数据并生成汇总报表。
python
运行
import pandas as pd import os def merge_excel_files(folder_path, output_file="merged_data.xlsx"): """ 批量合并文件夹中的所有Excel文件 :param folder_path: 文件夹路径 :param output_file: 输出文件名 """ # 存储所有数据 all_data = [] # 遍历文件夹中的所有Excel文件 for filename in os.listdir(folder_path): if filename.endswith((".xlsx", ".xls")) and not filename.startswith("~$"): file_path = os.path.join(folder_path, filename) print(f"正在读取: {filename}") # 读取Excel文件 df = pd.read_excel(file_path) # 添加来源文件名列 df["来源文件"] = filename # 添加到数据列表 all_data.append(df) # 合并所有数据 if all_data: merged_df = pd.concat(all_data, ignore_index=True) # 保存合并后的数据 merged_df.to_excel(output_file, index=False) print(f"合并完成!共合并 {len(all_data)} 个文件,输出到 {output_file}") else: print("没有找到Excel文件") # 使用示例 if __name__ == "__main__": excel_folder = "./excel_files" # 替换为你的Excel文件夹路径 merge_excel_files(excel_folder, output_file="销售数据汇总.xlsx")四、自动发送邮件
需要定期发送邮件?这个脚本可以帮你自动发送带附件的邮件,支持群发。
python
运行
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication def send_email(sender_email, sender_password, receiver_emails, subject, body, attachments=None): """ 发送带附件的邮件 :param sender_email: 发件人邮箱 :param sender_password: 发件人邮箱密码/授权码 :param receiver_emails: 收件人邮箱列表 :param subject: 邮件主题 :param body: 邮件正文 :param attachments: 附件路径列表 """ # 创建邮件对象 msg = MIMEMultipart() msg["From"] = sender_email msg["To"] = ", ".join(receiver_emails) msg["Subject"] = subject # 添加邮件正文 msg.attach(MIMEText(body, "plain", "utf-8")) # 添加附件 if attachments: for file_path in attachments: with open(file_path, "rb") as f: part = MIMEApplication(f.read()) part.add_header("Content-Disposition", "attachment", filename=os.path.basename(file_path)) msg.attach(part) # 发送邮件 try: # 这里以QQ邮箱为例,其他邮箱请修改SMTP服务器和端口 server = smtplib.SMTP_SSL("smtp.qq.com", 465) server.login(sender_email, sender_password) server.sendmail(sender_email, receiver_emails, msg.as_string()) server.quit() print("邮件发送成功!") except Exception as e: print(f"邮件发送失败: {e}") # 使用示例 if __name__ == "__main__": sender = "your_email@qq.com" password = "your_authorization_code" # QQ邮箱使用授权码 receivers = ["receiver1@example.com", "receiver2@example.com"] subject = "每周工作汇报" body = "您好,附件是本周的工作汇报,请查收。" attachments = ["./工作汇报.docx", "./数据报表.xlsx"] send_email(sender, password, receivers, subject, body, attachments)五、网站状态监控脚本
需要监控网站是否正常运行?这个脚本可以定期检查网站状态,当网站无法访问时发送邮件提醒。
python
运行
import requests import time import smtplib from email.mime.text import MIMEText def check_website_status(url): """ 检查网站是否正常运行 :param url: 网站URL :return: 正常返回True,异常返回False """ try: response = requests.get(url, timeout=10) return response.status_code == 200 except Exception as e: print(f"检查网站失败: {e}") return False def send_alert_email(url, sender_email, sender_password, receiver_email): """ 发送网站异常提醒邮件 """ subject = f"网站异常提醒: {url}" body = f"网站 {url} 无法访问,请及时检查!" msg = MIMEText(body, "plain", "utf-8") msg["From"] = sender_email msg["To"] = receiver_email msg["Subject"] = subject try: server = smtplib.SMTP_SSL("smtp.qq.com", 465) server.login(sender_email, sender_password) server.sendmail(sender_email, receiver_email, msg.as_string()) server.quit() print("提醒邮件发送成功!") except Exception as e: print(f"提醒邮件发送失败: {e}") def monitor_websites(urls, check_interval=300): """ 监控多个网站状态 :param urls: 网站URL列表 :param check_interval: 检查间隔(秒),默认5分钟 """ # 网站状态记录 website_status = {url: True for url in urls} print("开始监控网站状态...") while True: for url in urls: current_status = check_website_status(url) # 如果状态发生变化 if current_status != website_status[url]: if not current_status: print(f"网站异常: {url}") send_alert_email(url, "your_email@qq.com", "your_password", "alert@example.com") else: print(f"网站恢复正常: {url}") # 更新状态 website_status[url] = current_status # 等待下一次检查 time.sleep(check_interval) # 使用示例 if __name__ == "__main__": websites_to_monitor = [ "https://www.example.com", "https://www.baidu.com" ] monitor_websites(websites_to_monitor, check_interval=300)六、Python 自动化最佳实践
- 添加异常处理:在脚本中加入 try-except 语句,避免因意外错误导致脚本崩溃
- 使用配置文件:将敏感信息(如邮箱密码)和可配置参数放在单独的配置文件中
- 添加日志记录:使用 logging 模块记录脚本运行情况,方便问题排查
- 编写注释和文档:为函数和关键代码添加注释,方便自己和他人理解
- 定期备份数据:在进行文件操作前,先备份重要数据,防止误操作
写在最后
Python 自动化的魅力在于,它能让你用几行代码解决原本需要几个小时才能完成的工作。上面这 5 个脚本只是 Python 自动化的冰山一角,你可以根据自己的实际需求进行修改和扩展。
希望今天分享的这些脚本能帮助你提高工作效率,把更多的时间花在更有创造性的事情上。如果你有其他实用的 Python 自动化脚本,欢迎在评论区分享给大家。
互动话题:你用 Python 写过哪些实用的自动化脚本?解决了什么问题?欢迎在评论区留言交流~