首页 > 解决方案 > Tkinter Shutil 移动文件

问题描述

我正在使用 Tkinter 创建文件管理器。到目前为止,我已经创建了一种浏览文件和检查文件夹中文件的方法。我的问题是我正在尝试使用 shutil 将在过去 24 小时内修改或创建的文件从一个源文件夹移动到目标文件夹。在我合并 Tkinter 之前,我使用 python 的代码运行良好。现在它移动了我的整个文件夹,而不仅仅是过去 24 小时内修改过的文件。

任何帮助,将不胜感激!我是学生,所以我还在学习。


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

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


def select_folder():
    src = filedialog.askdirectory()

def move_to():
    src = filedialog.askdirectory()
    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 last_mod_time(src_fname) > before:
        dst_fname = os.path.join(dst, fname)
    dst = filedialog.askdirectory()
    shutil.move(src, dst)

def file_check():
    folderList = filedialog.askdirectory()
    sortlist = sorted(os.listdir(folderList))
    i=0
    print("Files in ", folderList, "folder are:")
    while(i<len(sortlist)):
        print(sortlist[i]+'\n')
        i+=1
            

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()

标签: pythontkintershutil

解决方案


shutil.move(src, dst)

你在那里告诉它移动目录。我想你打算这样做

shutil.move(src_fname, dst_fname)

您还有一些缩进问题。作为猜测,您需要:

def move_to():
    src = filedialog.askdirectory()
    dst = filedialog.askdirectory()

    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 last_mod_time(src_fname) > before:
            dst_fname = os.path.join(dst, fname)
            shutil.move(src_fname, dst_fname)

推荐阅读