开源与脚本

最常用的 Python 实用脚本合集(免费下载)

AI智能摘要
本文整理了10类常用的Python实用脚本,涵盖文件处理、数据清洗、自动化办公和网络爬虫等场景,适用于提升日常工作效率。脚本包括批量重命名、CSV转Excel、数据去重、生成统计报告、批量发送邮件、自动生成Word报告及获取天气数据等功能,均附详细注释与使用示例,并提供免费下载链接,便于用户直接应用。
— 此摘要由AI分析文章内容生成,仅供参考。

在日常工作与学习中,Python 凭借其简洁的语法和强大的库支持,成为解决各类重复任务、提升效率的首选工具。无论是文件处理、数据清洗,还是自动化操作、网络爬虫,一段简短的 Python 脚本都能帮我们省去大量手动操作的时间。本文整理了 10 类最常用的 Python 实用脚本,涵盖办公、开发、数据分析等多个场景,每段脚本均附带详细注释和使用说明,文末提供免费下载链接,让你直接上手使用!

一、文件处理类脚本:轻松搞定文件批量操作

文件处理是日常工作中最频繁的需求之一,比如批量重命名、格式转换、内容提取等。以下脚本可覆盖 80% 的文件处理场景,代码简洁且兼容性强。

1. 批量重命名文件(支持自定义规则)

适用场景:处理照片、文档、数据文件等批量命名需求,避免手动逐个修改的繁琐。

Python
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,方便后续编辑和可视化。

Python
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 数据中的重复行、空值,为后续分析做准备。

Python
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)

适用场景:快速生成数据的描述性统计(均值、标准差、中位数等),无需手动计算。

Python
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. 批量发送带附件的邮件(支持多人)

适用场景:工作中需向多人发送会议通知、报表等,避免手动逐个添加收件人和附件。

Python
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 报告(插入表格与图片)

适用场景:定期生成业务报告(如周报、月报),自动插入数据表格和可视化图表,无需手动排版。

Python
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 天预报,用于办公提醒或数据统计。

Python
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...

延伸阅读:

暂无内容!

    返回顶部