再见,加班!这个Python自动化流程,解放你的双手…

文摘   2024-11-07 08:08   广东  

▼点击下方卡片关注我


▲点击上方卡片关注我

平时工作离不开压缩文件、重命名文件、转换格式、生成报表这些繁琐的重复性工作。要是每次都手动处理,不光费时费力还容易出错。我写了个Python小工具,几行代码就能搞定这些烦心事,让你从重复劳动中解脱出来。


核心功能实现

1import os
2import zipfile
3import pandas as pd
4from datetime import datetime
5from pathlib import Path
7class FileProcessor:
8 def __init__(self, work_dir):
9 self.work_dir = Path(work_dir)
10 self.timestamp = datetime.now().strftime(“%Y%m%d”)
12 def batch_rename(self, prefix):
13 “”“批量重命名文件”“”
14 for file in self.work_dir.iterdir():
15 if file.is_file():
16 new_name = f“{prefix}_{self.timestamp}_{file.name}”
17 file.rename(self.work_dir / new_name)
19 def create_zip(self, zip_name):
20 “”“压缩文件夹”“”
21 with zipfile.ZipFile(f“{zip_name}.zip”, 'w') as zf:
22 for file in self.work_dir.rglob(“*”):
23 if file.is_file():
24 zf.write(file, file.name)
26 def generate_report(self):
27 “”“生成文件清单报表”“”
28 files_info = []
29 for file in self.work_dir.rglob(“*”):
30 if file.is_file():
31 info = {
32 “文件名”: file.name,
33 “大小(KB)”: round(file.stat().st_size/1024, 2),
34 “修改时间”: datetime.fromtimestamp(file.stat().st_mtime)
35 }
36 files_info.append(info)
38 df = pd.DataFrame(files_info)
39 df.to_excel(f“文件清单_{self.timestamp}.xlsx”, index=False)

实战应用

这么用就对啦: 


1# 实例化处理器
2processor = FileProcessor(“工作目录”)
4# 批量重命名文件
5processor.batch_rename(“项目A”)
7# 压缩文件
8processor.create_zip(“交付包”)
10# 生成报表
11processor.generate_report()

⚠️ 小贴士:


  • 用之前记得备份重要文件,以防万一
  • 处理大量文件时注意内存占用
  • 文件名不要包含特殊字符,容易出问题


进阶玩法

还可以加点花样,比如: 


1class AdvancedProcessor(FileProcessor):
2 def filter_by_type(self, file_type):
3 “”“按文件类型筛选”“”
4 return [f for f in self.work_dir.rglob(f“*.{file_type}”)]
6 def organize_by_date(self):
7 “”“按日期归类文件”“”
8 for file in self.work_dir.iterdir():
9 if file.is_file():
10 date = datetime.fromtimestamp(file.stat().st_mtime)
11 date_folder = self.work_dir / date.strftime(“%Y-%m”)
12 date_folder.mkdir(exist_ok=True)
13 file.rename(date_folder / file.name)
15# 用法示例
16adv_processor = AdvancedProcessor(“工作目录”)
17excel_files = adv_processor.filter_by_type(“xlsx”)
18adv_processor.organize_by_date()

代码详解

这个工具的设计思路很简单:用 Path 对象处理文件路径,避免跨平台兼容性问题;用  来组织代码,方便扩展新功能;加入 错误处理  日志记录 ,提高程序健壮性。


⚠️ 小贴士:


  • Path比os.path好用,强烈推荐
  • 文件操作要加try-except,别裸奔
  • 日志记录方便排查问题,别省这一步


常见坑点

写这种工具最容易踩坑的地方:


  • 文件路径用反斜杠,在Windows上炸锅
  • 中文路径编码问题,各种乱码
  • 文件被占用,删不掉改不了
  • 内存疯涨,电脑死机


我整理了个完整版的代码,加了异常处理和日志记录: 


1import logging
2from pathlib import Path
3from typing import List
5logging.basicConfig(level=logging.INFO)
6logger = logging.getLogger(__name__)
8class SafeProcessor(FileProcessor):
9 def safe_rename(self, prefix: str) -> None:
10 “”“安全的重命名操作”“”
11 try:
12 self.batch_rename(prefix)
13 logger.info(“重命名完成”)
14 except Exception as e:
15 logger.error(f“重命名失败: {str(e)}”)
17 def safe_zip(self, name: str) -> None:
18 “”“安全的压缩操作”“”
19 try:
20 self.create_zip(name)
21 logger.info(“压缩完成”)
22 except Exception as e:
23 logger.error(f“压缩失败: {str(e)}”)

这套工具我自己用了大半年,成功解放了双手。关键是代码简单,容易改,想加啥功能自己改改就行。


⚠️ 小贴士:


  • 代码结构要清晰,方便维护
  • 边界条件要考虑全面
  • 多写注释,别埋坑


人生苦短,何必加班。用Python来处理这些体力活,把时间留给更有意思的事情。


推 荐 阅 读



Pandera:数据验证神器,这个Python库让数据更可靠!

 
 PyAutoGUI:自动化控制神器,这个Python库让你解放双手! Django,一个全栈开发者的 Python 终极武器!

点赞分享

让钱和爱流向你

第二世界的趣事
“在‘精神世界的趣事’中,我们一同探索心灵深处的奥秘。每一篇文章都是一次心灵的旅行,带你发现自我,理解他人,享受不一样的精神的盛宴。
 最新文章