在日常工作与学习中,Python 凭借其简洁的语法和强大的库支持,成为解决各类重复任务、提升效率的首选工具。无论是文件处理、数据清洗,还是自动化操作、网络爬虫,一段简短的 Python 脚本都能帮我们省去大量手动操作的时间。本文整理了 10 类最常用的 Python 实用脚本,涵盖办公、开发、数据分析等多个场景,每段脚本均附带详细注释和使用说明,文末提供免费下载链接,让你直接上手使用!
一、文件处理类脚本:轻松搞定文件批量操作
文件处理是日常工作中最频繁的需求之一,比如批量重命名、格式转换、内容提取等。以下脚本可覆盖 80% 的文件处理场景,代码简洁且兼容性强。
1. 批量重命名文件(支持自定义规则)
适用场景:处理照片、文档、数据文件等批量命名需求,避免手动逐个修改的繁琐。
import os
def batch_rename_files(folder_path, prefix="file_", start_num=1, suffix=".txt"):
"""
批量重命名文件夹中的文件
:param folder_path: 目标文件夹路径
:param prefix: 文件名前缀(默认:file_)
:param start_num: 起始编号(默认:1)
:param suffix: 文件后缀(默认:.txt,可根据实际修改)
"""
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 跳过文件夹,只处理文件
if os.path.isfile(os.path.join(folder_path, filename)):
# 构建新文件名:前缀 + 编号 + 后缀
new_filename = f"{prefix}{start_num}{suffix}"
# 拼接旧路径和新路径
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_filename)
# 执行重命名
os.rename(old_path, new_path)
start_num += 1
# 使用示例:将"文档文件夹"中的所有.txt文件重命名为"report_1.txt"、"report_2.txt"...
batch_rename_files(folder_path="C:/文档文件夹", prefix="report_", suffix=".txt")
2. 批量转换文件格式(以 CSV 转 Excel 为例)
适用场景:数据分析中常需将 CSV 格式转换为 Excel,方便后续编辑和可视化。
import pandas as pd
import os
def batch_csv_to_excel(folder_path, output_folder="Excel输出"):
"""
批量将文件夹中的CSV文件转换为Excel格式
:param folder_path: CSV文件所在文件夹
:param output_folder: Excel文件输出文件夹(默认在当前目录创建"Excel输出")
"""
# 创建输出文件夹(若不存在)
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历文件夹中的CSV文件
for filename in os.listdir(folder_path):
if filename.endswith(".csv"):
# 读取CSV文件
csv_path = os.path.join(folder_path, filename)
df = pd.read_csv(csv_path, encoding="utf-8")
# 构建Excel文件名(去掉.csv后缀,添加.xlsx)
excel_filename = os.path.splitext(filename)[0] + ".xlsx"
excel_path = os.path.join(output_folder, excel_filename)
# 保存为Excel文件
df.to_excel(excel_path, index=False)
print(f"已转换:{filename} → {excel_filename}")
# 使用示例:转换"数据文件夹"中的所有CSV文件
batch_csv_to_excel(folder_path="C:/数据文件夹")
二、数据处理类脚本:快速清洗与分析数据
Python 的 pandas、numpy 库是数据处理的利器,以下脚本可解决数据去重、缺失值填充、统计分析等常见需求,无需手动操作 Excel。
1. 数据去重与缺失值处理(通用版)
适用场景:处理 Excel/CSV 数据中的重复行、空值,为后续分析做准备。
import pandas as pd
def clean_data(input_path, output_path="cleaned_data.xlsx"):
"""
数据清洗:去重 + 缺失值填充 + 异常值过滤
:param input_path: 输入数据路径(支持.xlsx/.csv)
:param output_path: 清洗后数据输出路径(默认:cleaned_data.xlsx)
"""
# 读取数据(自动识别Excel/CSV格式)
if input_path.endswith(".csv"):
df = pd.read_csv(input_path, encoding="utf-8")
else:
df = pd.read_excel(input_path)
print(f"原始数据形状:{df.shape}(行×列)")
# 1. 去除重复行
df = df.drop_duplicates()
print(f"去重后数据形状:{df.shape}")
# 2. 填充缺失值(数值列用均值,文本列用"未知")
for col in df.columns:
if df[col].dtype in ["int64", "float64"]: # 数值列
df[col].fillna(df[col].mean(), inplace=True)
else: # 文本列
df[col].fillna("未知", inplace=True)
# 3. 过滤异常值(以数值列为例,保留95%置信区间内的数据)
for col in df.columns:
if df[col].dtype in ["int64", "float64"]:
q1 = df[col].quantile(0.025) # 下分位数
q3 = df[col].quantile(0.975) # 上分位数
df = df[(df[col] >= q1) & (df[col] <= q3)]
print(f"最终清洗后数据形状:{df.shape}")
# 保存清洗后的数据
if output_path.endswith(".csv"):
df.to_csv(output_path, index=False, encoding="utf-8")
else:
df.to_excel(output_path, index=False)
print(f"清洗完成!文件已保存至:{output_path}")
# 使用示例:清洗"原始数据.xlsx"并输出为"清洗后数据.xlsx"
clean_data(input_path="原始数据.xlsx", output_path="清洗后数据.xlsx")
2. 生成数据统计报告(自动输出 Excel)
适用场景:快速生成数据的描述性统计(均值、标准差、中位数等),无需手动计算。
import pandas as pd
def generate_stat_report(input_path, report_path="data_report.xlsx"):
"""
生成数据统计报告:包含描述性统计、数据类型、缺失值占比
:param input_path: 输入数据路径
:param report_path: 统计报告输出路径
"""
# 读取数据
df = pd.read_excel(input_path) if input_path.endswith(".xlsx") else pd.read_csv(input_path, encoding="utf-8")
# 1. 描述性统计(数值列)
desc_stats = df.describe()
# 2. 数据类型统计
dtype_stats = pd.DataFrame({
"数据类型": df.dtypes,
"非空值数量": df.count(),
"缺失值数量": df.isnull().sum(),
"缺失值占比(%)": (df.isnull().sum() / len(df) * 100).round(2)
})
# 3. 保存报告到Excel(分多个工作表)
with pd.ExcelWriter(report_path, engine="openpyxl") as writer:
desc_stats.to_excel(writer, sheet_name="描述性统计")
dtype_stats.to_excel(writer, sheet_name="数据类型与缺失值")
print(f"统计报告已生成:{report_path}")
print("\n=== 数据概览 ===")
print(f"数据总行数:{len(df)}")
print(f"数据总列数:{len(df.columns)}")
print(f"数值列数量:{len(df.select_dtypes(include=['int64', 'float64']).columns)}")
# 使用示例:为"销售数据.csv"生成统计报告
generate_stat_report(input_path="销售数据.csv", report_path="销售数据统计报告.xlsx")
三、自动化办公类脚本:解放双手,告别重复操作
日常办公中,发送邮件、生成报表、操作 Word/Excel 等重复任务,都可以用 Python 自动化完成,以下脚本可直接适配多数办公场景。
1. 批量发送带附件的邮件(支持多人)
适用场景:工作中需向多人发送会议通知、报表等,避免手动逐个添加收件人和附件。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import os
def batch_send_email(sender_email, sender_password, receiver_list, subject, content, attachment_paths=None):
"""
批量发送带附件的邮件
:param sender_email: 发件人邮箱(如:xxx@163.com)
:param sender_password: 发件人邮箱授权码(非登录密码,需在邮箱设置中开启SMTP并获取)
:param receiver_list: 收件人列表(如:["a@qq.com", "b@163.com"])
:param subject: 邮件主题
:param content: 邮件正文(支持HTML格式)
:param attachment_paths: 附件路径列表(如:["C:/报表.xlsx", "C:/说明文档.pdf"],默认无附件)
"""
# 1. 构建邮件对象
msg = MIMEMultipart()
msg["From"] = sender_email # 发件人
msg["To"] = ", ".join(receiver_list) # 收件人(用逗号分隔多个邮箱)
msg["Subject"] = subject # 邮件主题
# 2. 添加邮件正文
msg.attach(MIMEText(content, "html", "utf-8"))
# 3. 添加附件(若有)
if attachment_paths and isinstance(attachment_paths, list):
for attachment_path in attachment_paths:
if os.path.exists(attachment_path):
# 读取附件文件
with open(attachment_path, "rb") as f:
part = MIMEBase("application", "octet-stream")
part.set_payload(f.read())
encoders.encode_base64(part) # 编码为base64
# 设置附件名称
filename = os.path.basename(attachment_path)
part.add_header("Content-Disposition", f"attachment; filename={filename}")
msg.attach(part)
# 4. 发送邮件(以163邮箱为例,SMTP服务器:smtp.163.com,端口:25)
try:
server = smtplib.SMTP("smtp.163.com", 25)
server.login(sender_email, sender_password) # 登录邮箱
# 发送邮件(将收件人列表转为元组)
server.sendmail(sender_email, tuple(receiver_list), msg.as_string())
server.quit()
print(f"邮件已成功发送给:{', '.join(receiver_list)}")
except Exception as e:
print(f"邮件发送失败!错误信息:{str(e)}")
# 使用示例:向多人发送带Excel附件的邮件
sender_email = "your_email@163.com"
sender_password = "your_auth_code" # 替换为你的邮箱授权码
receiver_list = ["user1@qq.com", "user2@163.com"]
subject = "2024年5月销售报表"
content = """
<p>各位同事:</p>
<p>您好!附件为2024年5月的销售数据报表,请查收。</p>
<p>如有疑问,请随时联系我。</p>
<p>此致<br>数据部</p>
"""
attachment_paths = ["C:/2024年5月销售报表.xlsx"]
batch_send_email(sender_email, sender_password, receiver_list, subject, content, attachment_paths)
2. 自动生成 Word 报告(插入表格与图片)
适用场景:定期生成业务报告(如周报、月报),自动插入数据表格和可视化图表,无需手动排版。
from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
import pandas as pd
def generate_word_report(report_path, title, data_df, img_path=None):
"""
自动生成Word报告:包含标题、数据表格、图片(可选)
:param report_path: 报告输出路径(.docx格式)
:param title: 报告标题(如:2024年5月销售报告)
:param data_df: 需插入的DataFrame数据(将转为表格)
:param img_path: 需插入的图片路径(默认无图片)
"""
# 1. 创建Word文档
doc = Document()
# 2. 添加标题
title_para = doc.add_heading(title, level=1)
title_para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 标题居中
# 3. 添加报告说明(段落)
doc.add_paragraph("报告生成时间:2024年5月31日(自动生成)")
doc.add_paragraph("数据来源:销售管理系统")
doc.add_paragraph("\n=== 核心数据表格 ===")
# 4. 插入数据表格(从DataFrame转换)
# 添加表格(行数=数据行数+1(表头),列数=数据列数)
table = doc.add_table(rows=1, cols=len(data_df.columns))
table.style = "Table Grid" # 表格样式(带边框)
# 设置表头
hdr_cells = table.rows[0].cells
for i, col_name in enumerate(data_df.columns):
hdr_cells[i].text = col_name
# 表头文字加粗、居中
for paragraph in hdr_cells[i].paragraphs:
for run in paragraph.runs:
run.font.bold = True
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 填充表格数据
for _, row in data_df.iterrows():
row_cells = table.add_row().cells
for i, value in enumerate(row):
row_cells[i].text = str(value)
# 数据文字居中
for paragraph in row_cells[i].paragraphs:
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 5. 插入图片(可选)
if img_path and os.path.exists(img_path):
doc.add_paragraph("\n=== 数据可视化图表 ===")
img_para = doc.add_picture(img_path, width=Inches(6)) # 图片宽度6英寸
img_para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 图片居中
# 6. 保存报告
doc.save(report_path)
print(f"Word报告已生成:{report_path}")
# 使用示例:生成销售月报(含表格和图表)
# 准备数据(示例:5月各区域销售额)
data_df = pd.DataFrame({
"区域": ["华东", "华北", "华南", "华西"],
"销售额(万元)": [1250, 980, 860, 620],
"同比增长(%)": [15.2, 8.7, 12.3, 5.1]
})
# 生成报告(假设已有可视化图表"销售趋势图.png")
generate_word_report(
report_path="2024年5月销售月报.docx",
title="2024年5月各区域销售报告",
data_df=data_df,
img_path="C:/销售趋势图.png"
)
四、网络爬虫类脚本:合法获取公开数据
在合规前提下,Python 爬虫可帮助我们获取公开的网络数据(如天气、新闻、商品价格等),以下脚本均基于公开 API 或无反爬机制的网站,避免法律风险。
1. 爬取天气数据(基于公开 API)
适用场景:获取指定城市的实时天气、未来 7 天预报,用于办公提醒或数据统计。
import requests
import json
def get_weather(city, api_key="your_api_key"):
"""
爬取指定城市的天气数据(基于高德地图开放API,需先申请免费API Key)
:param city: 城市名称(如:北京、上海)
:param api_key: 高德地图API Key(免费申请地址:https://lbs.amap.com/)
:return: 天气数据字典(实时天气 + 未来</doubaocanvas>
评论列表 (0条):
加载更多评论 Loading...