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

Tkinter文件管理器调用shutil移动文件时误移动整个文件夹问题求助

问题原因

  • 缩进逻辑错误:for 循环、时间判断、路径拼接的代码没有正确缩进,仅循环执行了源文件路径拼接操作,判断逻辑和移动操作都在循环外执行
  • 变量定义顺序错误:代码中先使用了dst变量拼接目标路径,后才弹出选择框获取目标文件夹路径,会触发变量未定义报错
  • 移动参数错误:shutil.move传入的参数是整个源文件夹路径src,而非符合时间要求的单个文件路径,因此会直接移动整个源文件夹
  • 路径判断遗漏:没有判断遍历到的路径是文件还是文件夹,默认会把符合时间要求的子文件夹也一同移动

修正后完整代码

from tkinter import *
import shutil
import time
import os
from tkinter import filedialog

root = Tk()
root.title('File Manager')
root.geometry("300x250")

# 如果需要提前选择源文件夹复用,可以打开下面的注释,调整move_to逻辑
src_path = ""
def select_folder():
    global src_path
    src_path = filedialog.askdirectory(title="选择源文件夹")

def move_to():
    # 选择源文件夹,如果你提前用Select Folder按钮选了源,可以把下面两行替换为 src = src_path
    src = filedialog.askdirectory(title="选择源文件夹")
    if not src: # 处理用户取消选择的情况
        return
    # 先选择目标文件夹,避免后续变量未定义报错
    dst = filedialog.askdirectory(title="选择目标文件夹")
    if not dst:
        return
    SECONDS_IN_DAY = 24 * 60 * 60
    now = time.time()
    before = now - SECONDS_IN_DAY
    def last_mod_time(fname):
        return os.path.getmtime(fname)
    for fname in os.listdir(src):
        src_fname = os.path.join(src, fname)
        # 只移动文件,跳过子文件夹,不需要可以删除这行判断
        if not os.path.isfile(src_fname):
            continue
        if last_mod_time(src_fname) > before:
            dst_fname = os.path.join(dst, fname)
            shutil.move(src_fname, dst_fname)

def file_check():
    folderList = filedialog.askdirectory()
    if not folderList:
        return
    sortlist = sorted(os.listdir(folderList))
    print("Files in ", folderList, "folder are:")
    for filename in sortlist:
        print(filename+'\n')
            

select_button = Button(root, text="Select Folder", command= select_folder)
select_button.pack(pady=20)

move_button = Button(root, text="Move To Folder", command= move_to)
move_button.pack(pady=22)

check_button = Button(root, text="File Check", command= file_check)
check_button.pack(pady=24)

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:24:03