实用且可直接运行的Python代码示例

1. 文件批量重命名工具

python

import os

def batch_rename_files(directory, prefix, extension):
    """
    批量重命名目录下指定扩展名的文件
    :param directory: 目录路径
    :param prefix: 新文件名前缀
    :param extension: 文件扩展名(如'.jpg')
    """
    try:
        # 计数器用于生成序列号
        count = 1
        
        # 遍历目录中的所有文件
        for filename in os.listdir(directory):
            if filename.endswith(extension):
                # 构建新文件名
                new_name = f"{prefix}_{count}{extension}"
                # 原始文件完整路径
                old_path = os.path.join(directory, filename)
                # 新文件完整路径
                new_path = os.path.join(directory, new_name)
                
                # 重命名文件
                os.rename(old_path, new_path)
                print(f"重命名: {filename} -> {new_name}")
                count += 1
        
        print(f"成功重命名 {count-1} 个文件")
    
    except Exception as e:
        print(f"发生错误: {str(e)}")

# 使用示例(在Windows/Mac/Linux上均可运行)
if __name__ == "__main__":
    # 替换为你的目录路径
    target_directory = "/path/to/your/files"  
    batch_rename_files(target_directory, "vacation", ".jpg")

2. 网页内容抓取与解析

python

import requests
from bs4 import BeautifulSoup

def scrape_website(url, selector):
    """
    抓取网页内容并解析指定CSS选择器的元素
    :param url: 目标网址
    :param selector: CSS选择器
    :return: 提取的内容列表
    """
    try:
        # 发送HTTP请求
        response = requests.get(url)
        response.raise_for_status()  # 检查请求是否成功
        
        # 解析HTML内容
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 使用CSS选择器查找元素
        results = []
        for element in soup.select(selector):
            results.append(element.text.strip())
        
        return results
    
    except Exception as e:
        print(f"抓取失败: {str(e)}")
        return []

# 使用示例
if __name__ == "__main__":
    # 抓取豆瓣电影Top250的电影标题
    movie_titles = scrape_website(
        "https://movie.douban.com/top250", 
        "span.title:first-child"
    )
    
    print("豆瓣Top250电影:")
    for i, title in enumerate(movie_titles[:10], 1):  # 只显示前10个
        print(f"{i}. {title}")

3. 数据清洗与处理

python

import pandas as pd
import numpy as np

def clean_and_transform_data(data):
    """
    数据清洗与转换:
    1. 处理缺失值
    2. 转换日期格式
    3. 计算新字段
    :param data: 原始数据DataFrame
    :return: 清洗后的DataFrame
    """
    # 创建示例数据
    df = pd.DataFrame(data)
    
    # 1. 处理缺失值:用平均值填充数值列
    for col in ['age', 'salary']:
        if col in df.columns:
            df[col] = df[col].fillna(df[col].mean())
    
    # 2. 转换日期格式
    if 'join_date' in df.columns:
        df['join_date'] = pd.to_datetime(df['join_date'])
        df['join_year'] = df['join_date'].dt.year
    
    # 3. 计算薪资等级
    if 'salary' in df.columns:
        df['salary_level'] = pd.cut(
            df['salary'],
            bins=[0, 5000, 10000, np.inf],
            labels=['初级', '中级', '高级']
        )
    
    return df

# 使用示例
if __name__ == "__main__":
    # 创建测试数据
    test_data = {
        'name': ['张三', '李四', '王五', '赵六'],
        'age': [28, 35, np.nan, 42],
        'salary': [8000, 12000, 6500, np.nan],
        'join_date': ['2020-01-15', '2018-05-20', '2021-11-30', '2017-03-10']
    }
    
    cleaned_data = clean_and_transform_data(test_data)
    print("清洗后的数据:")
    print(cleaned_data)

4. 自动发送邮件(带附件)

python

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

def send_email(subject, body, to_email, attachment_path=None):
    """
    发送带附件的电子邮件
    :param subject: 邮件主题
    :param body: 邮件正文
    :param to_email: 收件人邮箱
    :param attachment_path: 附件路径(可选)
    """
    # 邮箱配置(替换为你的邮箱信息)
    sender_email = "your_email@example.com"
    sender_password = "your_email_password"
    smtp_server = "smtp.example.com"  # 例如:smtp.163.com
    smtp_port = 587  # 常见端口:587 (TLS) 或 465 (SSL)
    
    try:
        # 创建邮件对象
        msg = MIMEMultipart()
        msg['From'] = sender_email
        msg['To'] = to_email
        msg['Subject'] = subject
        
        # 添加邮件正文
        msg.attach(MIMEText(body, 'plain'))
        
        # 添加附件
        if attachment_path:
            with open(attachment_path, "rb") as file:
                attachment = MIMEApplication(file.read(), _subtype="pdf")
                attachment.add_header(
                    'Content-Disposition', 
                    'attachment', 
                    filename=attachment_path.split("/")[-1]
                )
                msg.attach(attachment)
        
        # 连接SMTP服务器并发送邮件
        with smtplib.SMTP(smtp_server, smtp_port) as server:
            server.starttls()  # 启用TLS加密
            server.login(sender_email, sender_password)
            server.send_message(msg)
        
        print("邮件发送成功!")
    
    except Exception as e:
        print(f"邮件发送失败: {str(e)}")

# 使用示例
if __name__ == "__main__":
    send_email(
        subject="每日报告",
        body="这是自动发送的测试邮件,包含本月销售数据摘要。",
        to_email="recipient@example.com",
        attachment_path="/path/to/sales_report.pdf"
    )

5. 文件加密/解密工具

python

from cryptography.fernet import Fernet
import os

def generate_key():
    """生成加密密钥"""
    return Fernet.generate_key().decode()

def encrypt_file(file_path, key):
    """
    加密文件
    :param file_path: 文件路径
    :param key: 加密密钥
    """
    try:
        fernet = Fernet(key.encode())
        
        with open(file_path, 'rb') as file:
            original = file.read()
        
        encrypted = fernet.encrypt(original)
        
        with open(file_path + ".encrypted", 'wb') as file:
            file.write(encrypted)
        
        print(f"文件已加密: {file_path}.encrypted")
        return True
    
    except Exception as e:
        print(f"加密失败: {str(e)}")
        return False

def decrypt_file(encrypted_path, key):
    """
    解密文件
    :param encrypted_path: 加密文件路径
    :param key: 解密密钥
    """
    try:
        fernet = Fernet(key.encode())
        
        with open(encrypted_path, 'rb') as file:
            encrypted = file.read()
        
        decrypted = fernet.decrypt(encrypted)
        
        output_path = encrypted_path.replace(".encrypted", ".decrypted")
        with open(output_path, 'wb') as file:
            file.write(decrypted)
        
        print(f"文件已解密: {output_path}")
        return True
    
    except Exception as e:
        print(f"解密失败: {str(e)}")
        return False

# 使用示例
if __name__ == "__main__":
    # 生成密钥(实际使用中应安全存储)
    secret_key = generate_key()
    print(f"生成的密钥: {secret_key}")
    
    # 测试文件路径
    test_file = "test_document.txt"
    
    # 创建测试文件
    with open(test_file, 'w') as f:
        f.write("这是一段需要加密的敏感信息。")
    
    # 加密文件
    encrypt_file(test_file, secret_key)
    
    # 解密文件
    decrypt_file(test_file + ".encrypted", secret_key)

6. 进度条显示(处理耗时任务)

python

import time
from tqdm import tqdm

def process_data_with_progress(data):
    """
    处理数据并显示进度条
    :param data: 待处理数据列表
    :return: 处理结果列表
    """
    results = []
    
    # 使用tqdm创建进度条
    for item in tqdm(data, desc="处理进度", unit="项"):
        # 模拟耗时处理
        time.sleep(0.1)
        
        # 数据处理逻辑(这里简单转换为大写)
        processed = item.upper()
        results.append(processed)
    
    return results

# 使用示例
if __name__ == "__main__":
    # 创建测试数据
    test_data = [f"item_{i}" for i in range(1, 51)]
    
    print("开始处理数据...")
    processed_data = process_data_with_progress(test_data)
    
    print("\n处理完成! 前5项结果:")
    print(processed_data[:5])

使用前准备:

  1. 安装所需库:

    bash

    pip install requests beautifulsoup4 pandas numpy cryptography tqdm
  2. 邮件示例需配置真实邮箱的SMTP信息

  3. 文件操作示例请替换为实际存在的路径

这些代码覆盖了日常开发中的常见需求,包含错误处理和生产环境最佳实践,可以直接复制使用或集成到项目中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万能小贤哥

感谢大捞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值