当前位置:首页>python>告别手动改名!用 Python 监控社保公积金下载,实现财务自动化

告别手动改名!用 Python 监控社保公积金下载,实现财务自动化

  • 2026-08-26 13:35:26
告别手动改名!用 Python 监控社保公积金下载,实现财务自动化
处理社保公积金,每个月总有几天要跟系统斗智斗勇。
从社保局或公积金中心批量下载凭证时,会发现:
社保完税证明:下载后都是「document.pdf」,「document(1).pdf」……
公积金缴存凭证:文件名是一大串 16 位的数字(如「2023102488991234.pdf」),根本看不出是谁的。
分类归档这些文件,手动操作废时失事。推荐用watchdog(看门狗...),搭建「下载文件夹守护神」,让文件下载后自动分类重命名!

核心逻辑:精准识别

要监控的是浏览器的默认「下载」文件夹。识别规则如下:
  1. 社保完税证明:匹配「document」开头的 PDF 文件。
  2. 公积金凭证:匹配「16 位纯数字」命名的 PDF(使用正则表达式 re.match)。

具体代码

import osimport reimport timeimport shutilfrom watchdog.observers import Observerfrom watchdog.events import FileSystemEventHandler# 配置路径(改为你的下载路径)DOWNLOAD_PATH = r"C:\Users\Admin\Downloads"DEST_PATH_SOCIAL = r"D:\财务归档\社保完税证明"DEST_PATH_PROVIDENT = r"D:\财务归档\公积金凭证"class FinanceFileHandler(FileSystemEventHandler):    def on_created(self, event):        if event.is_directory:            return        file_path = event.src_path        filename = os.path.basename(file_path)        # 1. 处理社保完税证明 (匹配 document*.pdf)        if filename.lower().startswith("document") and filename.endswith(".pdf"):            self.move_file(file_path, DEST_PATH_SOCIAL, "社保证明")        # 2. 处理公积金凭证 (使用正则匹配:纯16位数字 + .pdf)        elif re.match(r'^\d{16}\.pdf$', filename):            self.move_file(file_path, DEST_PATH_PROVIDENT, "公积金凭证")    def move_file(self, src_path, dest_dir, category):        try:            if not os.path.exists(dest_dir):                os.makedirs(dest_dir)            # 加上时间戳,防止文件名重复            timestamp = time.strftime("%Y%m%d_%H%M%S")            new_name = f"{category}_{timestamp}_{os.path.basename(src_path)}"            dest_path = os.path.join(dest_dir, new_name)            # 稍微延迟,确保浏览器已完成文件写入            time.sleep(1)             shutil.move(src_path, dest_path)            print(f"【自动化成功】检测到{category},已归档至:{dest_path}")        except Exception as e:            print(f"【处理失败】{e}")if __name__ == "__main__":    event_handler = FinanceFileHandler()    observer = Observer()    observer.schedule(event_handler, DOWNLOAD_PATH, recursive=False)    print(f"财务助手已启动,监控下载文件夹中...")    observer.start()    try:        while True:            time.sleep(1)    except KeyboardInterrupt:        observer.stop()    observer.join()

为何这是财务神器?

  1. 「即下即得」:只需在浏览器点「下载」,之后分类、重命名、归档全由 Python 自动完成。

  2. 正则精准命中:用 re.match(r'^\d{16}$', ...) 正则匹配,可精准区分公积金凭证和其他乱码文件,零误读。

  3. 减少归档压力:月底审计或查账时,文件夹清清楚楚,再也不用逐个「document(99).pdf」瞎找了。


小贴士(Tips)

防止冲突:由于浏览器下载大文件会产生 「.tmp」 或 「.crdownload」 后缀,脚本只认 「.pdf」,有效避开临时文件的干扰。
自定义扩展:还可结合 pdfplumber 库(比如自动解析发票),进一步读取 PDF 的单位名称或金额,实现更高级的自动命名。

重点:如何「无感」运行?

很多小伙伴问:『代码写好,下载时就会自动转化?每次都要打开黑框(终端)吗?』
答案:Python 代码就像「保安」,不请他「打卡上班」(运行程序)才不会工作。
为实现真正的「全自动」,以下两步让保安 24 小时值班,而无需察觉到他的存在:

1. 隐身运行,拒绝黑框

如果不想桌面一直有个黑色的命令窗,可将文件的后缀从 .py 改成.pyw。
  1. .py:运行时会弹出控制台窗口(适合调试)。
  2. .pyw:窗口隐身,默默在后台处理逻辑(适合长期使用)。

2. 开机自启,彻底解放双手

让「保安」每天跟随电脑自动开工?简单两步即可:
1. 按 Win + R 键,输入 shell:startup 并回车。
2. 将 .pyw 脚本(或其快捷方式)拖进弹出的文件夹中。
从此一打开电脑,这套自动化流程就绪。只需像往常在浏览器点击「下载」,剩下的重命名与归档工作,Python 会在看不到的地方,又快又准地为主人服务。

结语

技术本应服务生活。一个简单的 watchdog 脚本,就摆脱枯燥的「下载-重命名-搬运」循环。

参考文章

电子发票 PDF 自动解析:新版代码 vs 旧文实现的深度对比
电子普票智能汇总工具 exe 版
电子普票PDF自动解析:一篇给一线财务、运营的地气指南

最新文章

随机文章