零基础用Python实现档案自动整理与编号全流程

一、开发环境准备与依赖安装

在开始编写代码之前,我们需要确保计算机上已经安装了Python环境,并配置好必要的第三方库。本方案将使用Python的pandas库进行Excel数据处理,以及内置的osshutil库进行文件系统操作。

1. 安装Python环境

如果你的电脑尚未安装Python,请访问Python官方下载页面获取安装包。请务必下载3.8及以上版本

下载地址:https://www.python.org/downloads/

安装时,请务必勾选界面底部的"Add Python to PATH"选项,这将允许我们在命令行中直接调用Python命令。

2. 安装必要依赖库

打开终端(Windows下按Win+R输入cmd回车),依次执行以下命令安装处理Excel所需的库:

pip install pandas openpyxl

如果下载速度较慢,可以使用国内镜像源:

pip install pandas openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

二、构建档案索引数据源

为了实现精准的整理,我们需要建立一个“索引表”,告诉程序哪份文件对应哪个编号、应该归档到哪个类别。请按照以下严格格式准备Excel文件。

1. 创建Excel文件

在项目文件夹内新建一个Excel文件,命名为档案索引表.xlsx。不要修改文件名,代码中直接引用此名称。

2. 设置表头与数据

打开Excel,在第一行依次输入以下表头(注意不要有空格):

  • A列(原文件名):待整理文件的完整名称,包含后缀(例如:20231201_扫描件.pdf)。
  • B列(档案编号):目标文件名(例如:2023-CW-001)。
  • C列(归档年度):用于创建子文件夹(例如:2023)。
  • D列(保管期限):用于创建二级子文件夹(例如:永久、10年、30年)。

3. 填充示例数据

请确保你的Excel数据填写如下所示:

原文件名 档案编号 归档年度 保管期限
合同A.pdf 2023-HT-001 2023 永久
发票B.jpg 2023-FP-025 2023 10年

4. 准备待整理文件

在同级目录下创建一个名为待整理文件的文件夹,将所有需要重命名的原始文件放入其中。程序将读取此文件夹下的内容。

三、编写自动化整理脚本

零基础用Python实现档案自动整理与编号全流程

在项目根目录下新建一个文本文件,将其重命名为archive_organizer.py。将以下完整代码复制粘贴到文件中。这段代码实现了读取Excel、匹配文件、自动创建目录结构并重命名移动文件的全过程。

```python import os import shutil import pandas as pandas def organize_archives(): 配置常量 source_dir = '待整理文件' excel_file = '档案索引表.xlsx' output_dir = '整理后档案' log_file = '操作日志.txt' 检查源文件夹是否存在 if not os.path.exists(source_dir): print(f"错误:未找到源文件夹 '{source_dir}',请确认文件夹名称。") return 读取Excel数据 try: df = pandas.read_excel(excel_file) 将DataFrame转换为字典列表,方便遍历 data = df.to_dict('records') print(f"成功读取索引表,共 {len(data)} 条记录。") except Exception as e: print(f"读取Excel文件失败: {e}") return 初始化日志 success_count = 0 fail_count = 0 log_details = [] 遍历索引表进行操作 for index, row in enumerate(data): 获取当前行数据,strip()去除可能存在的首尾空格 old_name = str(row['原文件名']).strip() new_name = str(row['档案编号']).strip() year = str(row['归档年度']).strip() duration = str(row['保管期限']).strip() 构建源文件完整路径 src_file_path = os.path.join(source_dir, old_name) 检查源文件是否存在 if not os.path.exists(src_file_path): msg = f"【失败】未找到文件: {old_name}" print(msg) log_details.append(msg) fail_count += 1 continue 获取文件后缀名 file_ext = os.path.splitext(old_name)[1] target_filename = f"{new_name}{file_ext}" 构建目标文件夹路径 (输出目录/年度/保管期限) target_folder = os.path.join(output_dir, year, duration) 创建目标文件夹(如果不存在) if not os.path.exists(target_folder): os.makedirs(target_folder) 构建目标文件完整路径 target_file_path = os.path.join(target_folder, target_filename) 处理重名冲突 if os.path.exists(target_file_path): msg = f"【跳过】目标文件已存在,跳过移动: {target_filename}" print(msg) log_details.append(msg) fail_count += 1 continue try: 移动并重命名文件 shutil.move(src_file_path, target_file_path) msg = f"【成功】{old_name} -> {year}/{duration}/{target_filename}" print(msg) log_details.append(msg) success_count += 1 except Exception as e: msg = f"【错误】处理 {old_name} 时发生异常: {e}" print(msg) log_details.append(msg) fail_count += 1 写入日志文件 with open(log_file, 'w', encoding='utf-8') as f: f.write("\n".join(log_details)) f.write(f"\n\n汇总: 成功 {success_count} 条, 失败 {fail_count} 条") print(f"\n处理完成!请查看 '{log_file}' 获取详情。") if __name__ == "__main__": organize_archives() ```

四、核心代码逻辑详解

为了确保大家能根据实际需求修改代码,以下对脚本中的关键部分进行详细解析,不涉及任何废话,只讲技术实现。

1. 数据读取与容错

代码使用pandas.read_excel直接读取Excel文件。通过to_dict('records')方法,将表格数据转换为字典列表。这意味着每一行数据都会变成一个字典,键是表头名(如“原文件名”),值是对应的单元格内容。这种方式比按行号读取更健壮,即使Excel中间有空行也能正常处理。

2. 路径拼接与跨平台兼容

脚本中大量使用了os.path.join。这是Python处理路径的标准方法。它会自动根据你的操作系统(Windows或Mac/Linux)使用正确的路径分隔符(\ 或 /),防止因路径写法错误导致的文件找不到错误。例如,目标路径被拼接为output_dir/year/duration,形成了清晰的层级结构。

3. 目录自动创建

os.makedirs(target_folder)是关键的一行。它利用了Python的递归创建特性。如果目标路径是整理后档案/2023/永久,而这两个文件夹都不存在,这行代码会一次性把“整理后档案”和“2023”以及“永久”全部创建出来,无需手动写多层if判断。

4. 文件移动与原子性

我们使用shutil.move而不是复制后删除。move在同一个磁盘分区操作时,实际上是修改文件系统的索引表,速度极快,几乎瞬间完成,且不会占用双倍磁盘空间。这是处理大批量档案文件时的最佳实践。

五、执行脚本与结果验证

代码编写完毕后,按照以下步骤执行操作。

1. 运行脚本

在当前文件夹下,按住Shift键并在空白处右键,选择“在此处打开PowerShell窗口”或“命令提示符”。输入以下命令并回车:

python archive_organizer.py

2. 观察控制台输出

终端会实时打印每一条文件的处理状态。你应该能看到类似以下的输出:

成功读取索引表,共 2 条记录。
【成功】合同A.pdf -> 2023/永久/2023-HT-001.pdf
【成功】发票B.jpg -> 2023/10年/2023-FP-025.jpg
处理完成!请查看 '操作日志.txt' 获取详情。

3. 检查结果结构

操作完成后,你的文件夹目录结构应该如下所示:

  • 整理后档案/
    • 2023/
      • 永久/
        • 2023-HT-001.pdf
      • 10年/
        • 2023-FP-025.jpg
  • 操作日志.txt

4. 异常处理建议

如果提示“ModuleNotFoundError”,说明步骤二中安装依赖库的命令未执行成功,请重新检查pip安装。如果提示“未找到源文件夹”,请确保待整理文件文件夹名称完全一致,且与Python脚本在同一级目录下。所有操作细节均记录在生成的操作日志.txt中,如有部分文件失败,可直接打开日志文件查看具体原因进行修正。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统