#python #file #tkinter
#python #файл #tkinter
Вопрос:
Я написал функцию, которая отображает меня в tkinter, помечая все файлы в каталоге датой каждого последнего изменения.
я хочу, чтобы эти файлы были отсортированы по возрастанию в моей метке, я пробовал с помощью метода sorted(), но он не работает.
Есть моя функция :
def CheckModifyTime():
path = "C:\Users\sohei\Desktop\Perso\TestScriptWinSCP"
myDir = os.listdir(path)
window = tk.Toplevel(GuiInterface)
window.geometry("800x800")
today = date.today()
for root, dirs , files in os.walk(path):
for f in files:
myFiles = os.path.join(root, f)
modifyTime = myFiles " " time.ctime(os.path.getmtime(myFiles))
#print(modifyTime)
myVar = StringVar()
myVar.set(modifyTime)
label = tk.Entry(window , textvariable = myVar , width = "100").pack()
и с sorted()
методом :
def CheckModifyTime():
path = "C:\Users\sohei\Desktop\Perso\TestScriptWinSCP"
myDir = os.listdir(path)
window = tk.Toplevel(GuiInterface)
window.geometry("800x800")
today = date.today()
for root, dirs , files in os.walk(path):
for f in files:
myFiles = os.path.join(root, f)
modifyTime = myFiles " " time.ctime(os.path.getmtime(myFiles))
#print(modifyTime)
myVar = StringVar()
sortedFiles = sorted(modifyTime , key=lambda t: os.stat(t).st_mtime)
myVar.set(sortedFiles)
print(sortedFiles)
label = tk.Entry(window , textvariable = myVar , width = "100").pack()
У вас есть идея отсортировать мои файлы?
Комментарии:
1. Если я здесь чего-то не упускаю, вы пытаетесь «сортировать» один объект на каждой итерации. Почему «MyFiles» — множественное число? Это путь. Это одно. проверьте имена ваших переменных, тогда, вероятно, будет больше смысла в том, что происходит.
2. @Neil да, я исправил свою проблему, действительно легко, но я работал над своим кодом в течение 5 часов, и я не заметил, что это было так просто, спасибо
Ответ №1:
Я бы создал для них объект.
class DatedFile:
def __init__(self, name, date):
self.name = name
self.date = date
def __lt__(self, other):
return self.date<self.other
Метод lt — это встроенная «волшебная» функция, которая вызывается всякий раз, когда используется оператор «меньше, чем». Это важно, потому что функции сортировки на самом деле просто выполняют много
Затем поместите все ваши файлы с датами в список, состоящий из экземпляров этого класса.
my_files = []
for f in files:
my_files.append(DatedFile(name, date))
my_files.sort()
А затем он отсортирует их по дате, и вы сможете получить доступ к их переменным, как к любому другому классу (.name и .date)
Дайте мне знать, если это поможет или если у вас есть какие-либо вопросы о необходимости дополнительных примеров!