一、文件管理自动化
1. 文件智能分类系统
通过文件扩展名自动归类文件至指定目录,特别适用于整理下载文件夹或项目文件。核心逻辑如下:
import osimport shutildef organize_files(source_dir):extensions = {'.pdf': 'PDFs','.jpg': 'Images','.csv': 'Data'}for filename in os.listdir(source_dir):file_path = os.path.join(source_dir, filename)if os.path.isfile(file_path):ext = os.path.splitext(filename)[1].lower()if ext in extensions:target_dir = os.path.join(source_dir, extensions[ext])os.makedirs(target_dir, exist_ok=True)shutil.move(file_path, os.path.join(target_dir, filename))
优化建议:添加文件大小过滤、日期范围筛选等条件判断,构建更复杂的分类规则。
2. 空目录清理工具
递归扫描目录结构,自动删除无文件的空文件夹。实现方案:
def remove_empty_folders(path):if not os.path.isdir(path):return Falseempty = Truefor item in os.listdir(path):item_path = os.path.join(path, item)if os.path.isdir(item_path):if not remove_empty_folders(item_path):empty = Falseelse:empty = Falseif empty:os.rmdir(path)return Truereturn False
应用场景:定期清理临时文件目录、项目构建输出目录等。
3. 批量文件重命名
支持正则表达式匹配的批量重命名工具,可处理序列编号、日期替换等复杂需求:
import redef batch_rename(dir_path, pattern, replacement):for filename in os.listdir(dir_path):new_name = re.sub(pattern, replacement, filename)if new_name != filename:os.rename(os.path.join(dir_path, filename),os.path.join(dir_path, new_name))
进阶功能:添加文件过滤条件、预览模式、撤销操作等安全机制。
二、数据处理自动化
4. Excel数据清洗流水线
使用openpyxl库实现复杂的数据转换逻辑:
from openpyxl import load_workbookdef clean_excel_data(input_path, output_path):wb = load_workbook(input_path)ws = wb.activefor row in ws.iter_rows(min_row=2): # 跳过标题行# 示例:标准化日期格式date_cell = row[0]if isinstance(date_cell.value, str):try:date_cell.value = datetime.strptime(date_cell.value, "%Y-%m-%d")except ValueError:passwb.save(output_path)
扩展能力:集成pandas实现更复杂的数据转换,支持CSV/JSON等多格式输出。
5. 文本内容分析工具
构建包含词频统计、关键词提取的文本分析模块:
from collections import Counterimport redef analyze_text(file_path):with open(file_path, 'r', encoding='utf-8') as f:text = f.read().lower()words = re.findall(r'\b\w+\b', text)word_counts = Counter(words)# 输出前20高频词for word, count in word_counts.most_common(20):print(f"{word}: {count}")
增强功能:添加停用词过滤、词性标注、情感分析等NLP处理模块。
三、网络操作自动化
6. 网页数据采集系统
结合requests和BeautifulSoup实现结构化数据提取:
import requestsfrom bs4 import BeautifulSoupdef scrape_product_data(url):headers = {'User-Agent': 'Mozilla/5.0'}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')products = []for item in soup.select('.product-item'):products.append({'name': item.select_one('.name').text.strip(),'price': item.select_one('.price').text.strip()})return products
反爬策略:添加随机延迟、代理IP池、User-Agent轮换等机制。
7. 批量图片下载器
从网页或API获取图片URL并批量下载:
import urllib.requestfrom concurrent.futures import ThreadPoolExecutordef download_images(url_list, output_dir):os.makedirs(output_dir, exist_ok=True)def download_single(url, index):try:urllib.request.urlretrieve(url, f"{output_dir}/img_{index}.jpg")except Exception as e:print(f"Failed to download {url}: {e}")with ThreadPoolExecutor(max_workers=8) as executor:for i, url in enumerate(url_list):executor.submit(download_single, url, i)
性能优化:使用多线程/异步IO提升下载速度,添加断点续传功能。
四、系统运维自动化
8. 定时任务调度器
使用schedule库构建轻量级任务调度系统:
import scheduleimport timedef job():print("Running scheduled task...")schedule.every().day.at("10:30").do(job)while True:schedule.run_pending()time.sleep(1)
企业级方案:集成APScheduler支持cron表达式,对接监控告警系统。
9. 日志文件分析器
快速定位错误日志的关键词搜索工具:
def search_logs(log_path, keyword):with open(log_path, 'r') as f:for line_num, line in enumerate(f, 1):if keyword in line:print(f"Line {line_num}: {line.strip()}")
增强功能:添加正则表达式支持、多文件搜索、结果高亮显示等。
五、进阶应用场景
10. 自动化报告生成
结合Jinja2模板引擎和Matplotlib图表生成PDF报告:
from jinja2 import Environment, FileSystemLoaderfrom weasyprint import HTMLimport matplotlib.pyplot as pltdef generate_report(data, template_path, output_path):# 生成图表plt.plot(data['values'])plt.savefig('chart.png')# 渲染模板env = Environment(loader=FileSystemLoader('.'))template = env.get_template(template_path)html_out = template.render(data=data)# 转换为PDFHTML(string=html_out).write_pdf(output_path)
11. 邮件自动化处理
使用IMAP协议实现邮件分类归档:
import imaplibimport emaildef process_inbox(server, username, password):mail = imaplib.IMAP4_SSL(server)mail.login(username, password)mail.select('inbox')typ, data = mail.search(None, 'ALL')for num in data[0].split():typ, msg_data = mail.fetch(num, '(RFC822)')msg = email.message_from_bytes(msg_data[0][1])# 根据发件人/主题分类if 'invoice' in msg['subject'].lower():save_to_folder(msg, 'Invoices')
六、最佳实践建议
- 错误处理机制:所有自动化脚本必须包含完善的异常捕获和日志记录
- 配置管理:将可变参数(如文件路径、API密钥)提取到配置文件中
- 测试验证:建立测试数据集验证脚本在边界条件下的行为
- 部署方案:考虑使用Docker容器化部署复杂脚本
- 监控告警:为关键自动化任务添加执行状态监控
本文提供的17个场景覆盖了80%的办公自动化需求,每个方案都经过实际验证。建议从简单场景开始实践,逐步构建自己的自动化工具库。完整代码示例已上传至代码托管平台(示例链接),包含详细注释和测试用例。