打工人效率开挂!Python 自动化脚本「即拿即用」日常办公、数据处理、运维部署、爬虫 / 定时任务… 全场景覆盖!文件操作、自动发邮件、数据清洗、图片处理、日志分析、远程部署等超实用功能,代码简单到新手也能懂,复制粘贴直接跑,告别机械重复活,效率直接翻倍!
还在手动给文件改名字?这个脚本支持自定义前缀 / 后缀,按序号批量重命名,不管是图片、文档还是视频,指定文件夹就能一键处理。
import osdef batch_rename(path, prefix='', suffix=''):# 遍历目标文件夹下的所有文件for i, filename in enumerate(os.listdir(path)):# 拼接新文件名:前缀+3位序号+后缀+原文件后缀new_name = f"{prefix}{i:03d}{suffix}{os.path.splitext(filename)[1]}"old_file = os.path.join(path, filename)new_file = os.path.join(path, new_name)os.rename(old_file, new_file) # 执行重命名# 使用示例:给/path/to/your/directory下的文件加前缀file_、后缀.txtbatch_rename('/path/to/your/directory', 'file_', '.txt')
定时发日报、催交材料、推送提醒?不用打开邮箱,脚本填好收件人、主题和内容,一键发送,还能扩展添加附件、抄送等功能。
import smtplibfrom email.mime.text import MIMETextdef send_email(to_addr, subject, content):# 配置邮箱服务器(以QQ/163邮箱为例,替换成对应smtp地址)smtp_server = 'smtp.example.com'username = 'your-email@example.com' # 发件人邮箱password = 'your-password' # 邮箱授权码(非登录密码)# 构建邮件内容msg = MIMEText(content)msg['Subject'] = subjectmsg['From'] = usernamemsg['To'] = to_addr# 连接服务器并发送邮件server = smtplib.SMTP(smtp_server, 587)server.starttls()server.login(username, password)server.sendmail(username, to_addr, msg.as_string())server.quit()# 使用示例:给receiver@example.com发送「每日报告提醒」邮件send_email('receiver@example.com', '每日报告提醒', '今日报告已生成,请查收。')
不用手动写 SQL 语句,脚本封装了数据库连接、数据插入功能,支持增删改查,适配 SQLite/MySQL(改连接方式即可)。
import sqlite3def create_connection(db_file):# 创建数据库连接conn = Nonetry:conn = sqlite3.connect(db_file)print(f"成功连接到SQLite数据库: {db_file}")except sqlite3.Error as e:print(e)return conndef insert_data(conn, table_name, data_dict):# 拼接插入SQL语句(数据字典:键=字段名,值=字段值)keys = ', '.join(data_dict.keys())values = ', '.join(f"'{v}'" for v in data_dict.values())sql = f"INSERT INTO {table_name} ({keys}) VALUES ({values});"try:cursor = conn.cursor()cursor.execute(sql)conn.commit() # 提交事务except sqlite3.Error as e:print(e)# 使用示例:连接my_database.db,往users表插入一条用户数据conn = create_connection('my_database.db')data = {'name': 'John Doe', 'age': 30}insert_data(conn, 'users', data)conn.close() # 关闭数据库连接
想批量获取网页标题、商品价格、新闻内容?用 requests+BeautifulSoup,几行代码就能爬取网页数据,支持翻页、多链接批量爬取。
import requestsfrom bs4 import BeautifulSoupdef fetch_web_content(url):# 发送请求获取网页内容response = requests.get(url)if response.status_code == 200: # 请求成功soup = BeautifulSoup(response.text, 'html.parser')title = soup.find('title').text # 提取网页标题(可替换成其他内容)return titleelse:return "无法获取网页内容"# 使用示例:爬取https://example.com的网页标题url = 'https://example.com'web_title = fetch_web_content(url)print("网页标题: ", web_title)
Excel/CSV 表格里的缺失值、重复行、格式错误?用 Pandas 一键处理,支持缺失值填充、重复值删除、字段类型转换,秒级完成海量数据清洗。
import pandas as pddef clean_data(file_path):# 读取CSV文件(可替换成read_excel读取Excel)df = pd.read_csv(file_path)# 填充缺失值为N/Adf.fillna('N/A', inplace=True)# 删除重复行df.drop_duplicates(inplace=True)# 把date_column列转换成日期格式df['date_column'] = pd.to_datetime(df['date_column'])return df# 使用示例:清洗data.csv文件cleaned_df = clean_data('data.csv')print("数据清洗完成,已准备就绪!")
手机 / 相机拍的高清图片太大?批量压缩图片大小,保留清晰度的同时减少体积,支持 jpg/png 格式,自定义压缩质量。
from PIL import Imageimport osdef compress_images(dir_path, quality=90):# 遍历目标文件夹下的图片文件for filename in os.listdir(dir_path):if filename.endswith(".jpg") or filename.endswith(".png"):img = Image.open(os.path.join(dir_path, filename))# 保存压缩后的图片(加前缀compressed_区分原文件)img.save(os.path.join(dir_path, f'compressed_{filename}'), optimize=True, quality=quality)# 使用示例:压缩/path/to/images下的图片,质量80(数值越小压缩率越高)compress_images('/path/to/images', quality=80)
需要修改多个文档里的相同文字?比如把 “旧地址” 换成 “新地址”、“2025” 改成 “2026”,指定文件夹就能批量替换,支持 txt、py、md 等格式。
import fileinputdef search_replace_in_files(dir_path, search_text, replace_text):# 遍历目标文件夹下的所有文件,逐行替换内容for line in fileinput.input([f"{dir_path}/*"], inplace=True):print(line.replace(search_text, replace_text), end='')# 使用示例:把/path/to/files下的old_text替换成new_textsearch_replace_in_files('/path/to/files', 'old_text', 'new_text')
服务器日志、系统日志里找错误?脚本一键统计 ERROR 行数,也可扩展统计警告、访问量等,不用手动翻几万行日志。
def analyze_log(log_file):# 读取日志文件with open(log_file, 'r') as f:lines = f.readlines()error_count = 0# 统计包含ERROR的行数for line in lines:if "ERROR" in line:error_count += 1print(f"日志文件中包含 {error_count} 条错误记录。")# 使用示例:分析application.log中的错误记录数analyze_log('application.log')
Excel 做图表太麻烦?用 Matplotlib+Pandas,读取 CSV/Excel 数据,一键生成柱状图、折线图、饼图,支持自定义标题、坐标轴。
import matplotlib.pyplot as pltimport pandas as pddef visualize_data(data_file):# 读取数据文件df = pd.read_csv(data_file)# 绘制柱状图(x轴=category列,y轴=value列)df.plot(kind='bar', x='category', y='value')plt.title('数据分布') # 图表标题plt.xlabel('类别') # x轴标签plt.ylabel('值') # y轴标签plt.show() # 显示图表# 使用示例:根据data.csv生成柱状图visualize_data('data.csv')
邮箱里几十封邮件的附件要手动下载?脚本连接邮箱,一键下载所有邮件的附件,指定保存路径,不用逐个点开邮件。
import imaplibimport emailfrom email.header import decode_headerimport osdef download_attachments(email_addr, password, imap_server, folder='INBOX'):# 连接IMAP邮箱服务器mail = imaplib.IMAP4_SSL(imap_server)mail.login(email_addr, password)# 选择收件箱mail.select(folder)result, data = mail.uid('search', None, "ALL")uids = data[0].split()# 遍历所有邮件for uid in uids:_, msg_data = mail.uid('fetch', uid, '(RFC822)')raw_email = msg_data[0][1].decode("utf-8")email_message = email.message_from_string(raw_email)# 提取邮件附件for part in email_message.walk():if part.get_content_maintype() == 'multipart':continueif part.get('Content-Disposition') is None:continuefilename = part.get_filename()if bool(filename):# 保存附件到指定路径file_data = part.get_payload(decode=True)with open(os.path.join('/path/to/download', filename), 'wb') as f:f.write(file_data)mail.close()
每天 / 每周要发数据报告?脚本自动读取数据、生成 HTML 格式报告,再通过邮件发送,不用手动做表格、写邮件。
import pandas as pdimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartdef generate_report(source, to_addr, subject):# 读取数据并生成HTML格式报告(可替换成自己的报表逻辑)report_content = pd.DataFrame({"Data": [1, 2, 3], "Info": ["A", "B", "C"]}).to_html()# 构建带HTML内容的邮件msg = MIMEMultipart()msg['From'] = 'your-email@example.com'msg['To'] = to_addrmsg['Subject'] = subjectmsg.attach(MIMEText(report_content, 'html'))# 发送邮件server = smtplib.SMTP('smtp.example.com', 587)server.starttls()server.login('your-email@example.com', 'your-password')text = msg.as_string()server.sendmail('your-email@example.com', to_addr, text)server.quit()# 使用示例:生成data.csv的报告并发送给receiver@example.comgenerate_report('data.csv', 'receiver@example.com', '每日数据报告')# 搭配第3个定时脚本,可实现每天自动发送
上线前要测试接口抗压能力?用 Locust 写性能测试脚本,模拟多用户并发访问,统计接口响应时间、成功率。
from locust import HttpUser, task, betweenclass WebsiteUser(HttpUser):wait_time = between(5, 15) # 模拟用户操作间隔5-15秒@task # 定义测试任务(默认权重)def load_test_api(self):# 测试GET接口/api/data,验证返回状态码200response = self.client.get("/api/data")assert response.status_code == 200@task(3) # 权重3倍:执行频率是其他任务的3倍def post_data(self):# 测试POST接口/api/submit,验证返回状态码201data = {"key": "value"}response = self.client.post("/api/submit", json=data)assert response.status_code == 201# 启动命令(终端执行):# locust -f your_test_script.py --host=http://your-api-url.com
开发完代码要手动登录服务器部署?脚本通过 SSH 连接服务器,一键拉取代码、安装依赖、重启服务,出问题还能快速回滚。
from fabric import Connectiondef deploy(host_string, user, password, project_path, remote_dir):# 连接远程服务器c = Connection(host=host_string, user=user, connect_kwargs={"password": password})# 进入项目目录执行部署命令with c.cd(remote_dir):c.run('git pull origin master') # 拉取最新代码c.run('pip install -r requirements.txt') # 安装依赖c.run('python manage.py migrate') # 数据库迁移(Django项目)c.run('python manage.py collectstatic --noinput') # 收集静态文件c.run('supervisorctl restart your_project_name') # 重启服务# 使用示例:部署项目到指定服务器deploy(host_string='your-server-ip', # 服务器IPuser='deploy_user', # 登录用户名password='deploy_password', # 登录密码project_path='/path/to/local/project', # 本地项目路径remote_dir='/path/to/remote/project' # 服务器项目路径)# 回滚:可基于git reset --hard 版本号实现,或恢复备份文件
工作中需要合并多个 PDF、提取 PDF 里的文字?不用安装付费软件,Python 脚本支持批量合并 PDF 文件、提取文本内容,效率直接翻倍,还能避免格式错乱。
from PyPDF2 import PdfMerger, PdfReaderdef merge_pdfs(input_paths, output_path):"""批量合并PDF文件"""merger = PdfMerger()# 遍历所有要合并的PDF路径for path in input_paths:merger.append(path) # 添加PDF文件merger.write(output_path) # 保存合并后的PDFmerger.close()print(f"PDF合并完成!保存路径:{output_path}")def extract_pdf_text(pdf_path, output_txt_path):"""提取PDF文件中的文本内容"""reader = PdfReader(pdf_path)text_content = ""# 遍历PDF所有页面,提取文本for page in reader.pages:text_content += page.extract_text() + "\n"# 保存提取的文本到TXT文件with open(output_txt_path, 'w', encoding='utf-8') as f:f.write(text_content)print(f"文本提取完成!保存路径:{output_txt_path}")# 使用示例1:合并3个PDF文件到merged.pdfinput_pdfs = ["file1.pdf", "file2.pdf", "file3.pdf"]merge_pdfs(input_pdfs, "merged.pdf")# 使用示例2:提取example.pdf的文本到output.txtextract_pdf_text("example.pdf", "output.txt")
15个自动化脚本的完整可运行代码,我已经整理成了【一键复制版】,包含详细注释和使用说明,不用自己改任何参数!想要的朋友直接在、关注祝,后台回复【123】无偿分享。#Python#数据库#办公室自动化##数据分析#大数据