#python #tkinter #shutil
Вопрос:
Я использую Tkinter для создания файлового менеджера. До сих пор я создавал способ просмотра файлов и проверки файлов в папке. Моя проблема в том, что я пытаюсь использовать shutil для перемещения файлов, которые были изменены или созданы за последние 24 часа, из одной исходной папки в папку назначения. Мой код с использованием python работал нормально, пока я не включил Tkinter. Теперь он перемещает всю мою папку, а не только файлы, которые были изменены за последние 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) gt; 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(ilt;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()
Ответ №1:
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) gt; before: dst_fname = os.path.join(dst, fname) shutil.move(src_fname, dst_fname)
Комментарии:
1. Ух ты! Спасибо! Я знал, что был очень близок к этому. Я ценю вашу помощь!
2. @girlcode Если это действительно решило вашу проблему, обязательно отметьте как правильный ответ 😀