前置要求
pip install requests beautifulsoup4 openpyxl
1. 批量图片下载器
目标:根据 URL 列表批量下载图片
import requests
import os
from urllib.parse import urlparse
def download_images(urls, folder='images'):
os.makedirs(folder, exist_ok=True)
for url in urls:
try:
response = requests.get(url, timeout=10)
filename = os.path.basename(urlparse(url).path)
filepath = os.path.join(folder, filename)
with open(filepath, 'wb') as f:
f.write(response.content)
print(f"下载成功: {filename}")
except Exception as e:
print(f"下载失败 {url}: {e}")
urls = [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg",
]
# download_images(urls)
知识点:requests 下载、os.makedirs、URL 解析
2. Excel 报表合并工具
目标:合并多个 Excel 文件的数据
import pandas as pd
import glob
def merge_excel_files(pattern, output_file='merged.xlsx'):
files = glob.glob(pattern)
all_data = []
for file in files:
df = pd.read_excel(file)
df['来源文件'] = os.path.basename(file)
all_data.append(df)
merged = pd.concat(all_data, ignore_index=True)
merged.to_excel(output_file, index=False)
print(f"已合并 {len(files)} 个文件,输出: {output_file}")
return merged
# merge_excel_files('sales_*.xlsx', 'total_sales.xlsx')
知识点:pandas 读取 Excel、glob 文件匹配、pd.concat
3. 邮件自动发送脚本
目标:批量发送定制化邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email(sender, password, receiver, subject, content):
msg = MIMEText(content, 'plain', 'utf-8')
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = Header(subject, 'utf-8')
with smtplib.SMTP_SSL('smtp.qq.com', 465) as server:
server.login(sender, password)
server.sendmail(sender, [receiver], msg.as_string())
print(f"邮件已发送至 {receiver}")
def batch_send(sender, password, recipients, template):
for name, email in recipients.items():
content = template.format(name=name)
send_email(sender, password, email, "活动通知", content)
# recipients = {"张三": "zhangsan@example.com"}
# template = "尊敬的 {name},您好!请查收本月活动安排。"
# batch_send("your_email@qq.com", "your_password", recipients, template)
知识点:smtplib 邮件发送、MIMEText 邮件格式、批量处理
4. PDF 文件批量合并
目标:使用 PyPDF2 合并多个 PDF 文件
from PyPDF2 import PdfMerger
import glob
def merge_pdfs(pattern, output='merged.pdf'):
merger = PdfMerger()
files = sorted(glob.glob(pattern))
for file in files:
merger.append(file)
print(f"已添加: {file}")
merger.write(output)
merger.close()
print(f"\n合并完成!共 {len(files)} 个文件 → {output}")
# 使用示例
# merge_pdfs('chapter_*.pdf', '完整文档.pdf')
知识点:PyPDF2、PDF 合并、glob 排序
5. 网站状态监控脚本
目标:定时检测网站可用性并记录日志
import requests
import time
from datetime import datetime
urls = [
'https://www.baidu.com',
'https://www.github.com',
]
def monitor(urls, interval=60):
print(f"开始监控 {len(urls)} 个网站...")
while True:
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for url in urls:
try:
start = time.time()
resp = requests.get(url, timeout=10)
elapsed = (time.time() - start) * 1000
status = f"✓ {resp.status_code} ({elapsed:.0f}ms)"
except Exception as e:
status = f"✗ {e}"
print(f"[{timestamp}] {url} {status}")
print("-" * 50)
time.sleep(interval)
# monitor(urls, interval=300)
知识点:requests 超时、time 计时、日志记录、循环监控
6. 自动备份文件夹
目标:按日期自动备份指定文件夹
import shutil
import os
from datetime import datetime
def backup_folder(source, backup_dir='backups'):
os.makedirs(backup_dir, exist_ok=True)
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
backup_name = f"backup_{timestamp}"
backup_path = os.path.join(backup_dir, backup_name)
shutil.make_archive(backup_path, 'zip', source)
size = os.path.getsize(backup_path + '.zip') / 1024 / 1024
print(f"备份完成: {backup_path}.zip ({size:.2f} MB)")
return backup_path + '.zip'
# backup_folder('./my_project')
知识点:shutil.make_archive、zip 压缩、时间戳命名