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])
使用前准备:
安装所需库:
bash
pip install requests beautifulsoup4 pandas numpy cryptography tqdm邮件示例需配置真实邮箱的SMTP信息
文件操作示例请替换为实际存在的路径
这些代码覆盖了日常开发中的常见需求,包含错误处理和生产环境最佳实践,可以直接复制使用或集成到项目中。