Tkinter Может Перемещать Файлы

#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 Если это действительно решило вашу проблему, обязательно отметьте как правильный ответ 😀