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

使用shutil.move移动文件丢失扩展名致文件不可用的问题求助

解决文件移动后丢失扩展名的问题

问题根源

问题出在append_timestamp(name)函数对文件名的处理逻辑上——如果直接给包含扩展名的完整文件名追加时间戳,很可能错误地破坏了扩展名结构,比如把时间戳加在扩展名之后,或是拆分文件名时丢失了扩展名部分。

修复方案

我们需要先拆分文件名主体和扩展名,仅给文件名部分添加时间戳,再重新拼接扩展名:

  1. 修复append_timestamp函数
import datetime
import os

def append_timestamp(filename):
    # 拆分文件名主体与扩展名
    name, ext = os.path.splitext(filename)
    # 生成自定义格式的时间戳(可根据需求调整格式)
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    # 重新拼接:文件名_时间戳.扩展名
    return f"{name}_{timestamp}{ext}"
  1. 优化safe_copy函数(可选,简化文件夹创建逻辑)
import os
import shutil

def safe_copy(self, src, out_dir):
    # 添加exist_ok=True,避免文件夹已存在时抛出异常
    os.makedirs(out_dir, exist_ok=True)
    name = os.path.basename(src) 
    shutil.move(src, os.path.join(out_dir, append_timestamp(name)))

额外注意事项

  • 时间戳格式可按需调整,比如%Y-%m-%d_%H-%M-%S更易读,但要注意部分系统不允许文件名包含:符号;
  • 若原文件没有扩展名(比如示例中的filename),上述逻辑也会保留无扩展名的状态,不会额外添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:15:40