You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本实现文件重命名追加时间戳并在文件末尾添加MD5校验值

文件重命名+追加MD5页脚脚本实现

以下是可直接运行的Python实现,完全匹配需求逻辑:

运行前务必备份目标目录文件,避免误操作造成数据损失。

核心实现逻辑

  • 文件名处理:针对示例中abc123.txt类的文件,自动提取前缀abc作为基础名,拼接YYYYMMDDHHMMSS格式的时间戳,保留原文件后缀生成新文件名
  • MD5处理:先计算原始文件内容的MD5值(避免追加内容后MD5校验值和实际写入值不匹配),再在文件末尾追加固定格式的页脚写入校验值
  • 自动跳过子目录、脚本本身,避免误处理

完整脚本代码

import os
import hashlib
from datetime import datetime

def calc_md5(content: bytes) -> str:
    """计算字节内容的MD5值"""
    md5_obj = hashlib.md5()
    md5_obj.update(content)
    return md5_obj.hexdigest()

if __name__ == "__main__":
    # 配置项:可根据自身需求修改
    target_dir = "./"  # 要处理的文件所在目录,默认当前脚本运行目录
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S")  # 时间戳格式
    footer_template = "\n---\n文件MD5校验值:{}\n"  # 页脚模板

    for filename in os.listdir(target_dir):
        file_path = os.path.join(target_dir, filename)
        # 跳过子目录和当前脚本本身
        if os.path.isdir(file_path) or filename == os.path.basename(__file__):
            continue
        
        # 拆分文件名和后缀
        name_part, ext_part = os.path.splitext(filename)
        # 提取基础名:示例规则为取开头的字母部分(abc123取abc),可自行修改规则
        base_name = ""
        for char in name_part:
            if char.isalpha():
                base_name += char
            else:
                break
        # 如果没提取到有效基础名,直接用原文件名前缀
        if not base_name:
            base_name = name_part
        
        # 读取原始文件内容
        with open(file_path, "rb") as f:
            original_content = f.read()
        
        # 计算原始内容MD5,拼接页脚
        file_md5 = calc_md5(original_content)
        new_content = original_content + footer_template.format(file_md5).encode("utf-8")
        
        # 生成新文件名
        new_filename = f"{base_name}_{timestamp}{ext_part}"
        new_file_path = os.path.join(target_dir, new_filename)
        
        # 写入新内容后重命名(同目录下os.replace会直接覆盖同名文件,谨慎操作)
        with open(file_path, "wb") as f:
            f.write(new_content)
        os.replace(file_path, new_file_path)
        print(f"处理完成:{filename} → {new_filename},MD5:{file_md5}")

使用说明

  • 先将脚本放到要处理的文件所在目录,或者修改target_dir参数为目标目录的绝对路径
  • 如果你的基础名提取规则和示例不一致(比如不需要去掉文件名里的数字、要固定用某个基础名),直接修改base_name部分的生成逻辑即可
  • 时间戳格式、页脚显示内容都可以通过配置项自定义调整
  • 同目录下如果已经存在同名的带时间戳文件,脚本会直接覆盖,建议处理前确认目录内无重复命名的文件

内容的提问来源于stack exchange,提问作者vicky20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:45:44