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

如何将shutil复制的目标文件路径存入变量并实现文件重命名?

解决方案

以下是修正后的代码,解决了路径处理、扩展名保留及文件夹存在性检查等问题:

import os
import shutil
import random
import tkinter as tk
from tkinter import filedialog, messagebox

def loadVideo():
    global filePath
    filePath = filedialog.askopenfilename()  # 获取原文件路径

# 确保目标文件夹存在,不存在则自动创建
target_folder = "video store"
if not os.path.exists(target_folder):
    os.makedirs(target_folder)

# 生成随机ID并保留原文件扩展名
random_id = str(random.randint(1, 1000000))
original_filename = os.path.basename(filePath)
file_ext = os.path.splitext(original_filename)[1]
new_filename = f"{random_id}{file_ext}"

# 复制原文件到目标文件夹
copied_file_path = os.path.join(target_folder, original_filename)
shutil.copy(filePath, copied_file_path)

# 重命名复制后的文件
new_file_path = os.path.join(target_folder, new_filename)
os.rename(copied_file_path, new_file_path)

messagebox.showinfo("", "Upload successful!")

关键改动说明:

  • 路径安全处理:用os.path.join()拼接路径,自动适配不同操作系统的路径分隔符,避免硬写/或\导致的跨平台问题
  • 获取文件名:通过os.path.basename(filePath)直接提取原文件名,无需手动猜测路径
  • 保留文件扩展名:用os.path.splitext()拆分文件名和扩展名,重命名后不会丢失视频格式信息
  • 文件夹存在性检查:添加os.makedirs()确保目标文件夹存在,防止复制操作因文件夹不存在报错
  • 路径完整性:重命名时传入完整目标路径,确保文件在video store文件夹内完成重命名,而非当前工作目录

可选优化(更可靠的随机ID):

如果担心randint生成的ID重复,可以改用uuid模块生成全局唯一ID:

import uuid
random_id = str(uuid.uuid4())  # 生成完全唯一的字符串ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:33:22