Для приведенного ниже кода
в команде findspec
я пытаюсь вернуть только путь к файлу и имена каталогов того, что вводит пользователь. Если файл не существует, отображается «Файл не найден».
Это часть, которая не работает:
def findspec():
r1 = tar.get()
rootdir = '.'
for dirname, subdirlist, filelist in os.walk(rootdir, topdown=False):
for file in filelist:
if fnmatch.fnmatch(file, tar.get()):
list1.insert(END, dirname + "--->" + str(r1))
else:
list1.insert(END, "File not found")
Должно быть возвращено это:
User/%User%/directory ---> config.py
User/%User%/directory/static ---> config.py
Вместо этого он возвращает это:
File not FOund
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
User/%User%/directory ---> config.py
File not Found
File not Found
User/%User%/directory/static ---> config.py
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
File not Found
Исходный код ниже:
import os
import fnmatch
import tkinter
from tkinter import *
from difflib import get_close_matches
def searchdir():
rootdir = '.'
for dirname, subdirlist, filelist in os.walk(rootdir, topdown=False):
for fname in filelist:
list1.insert(END, dirname + '\t%s' % fname)
def findspec():
r1 = tar.get()
rootdir = '.'
for dirname, subdirlist, filelist in os.walk(rootdir, topdown=False):
for file in filelist:
if fnmatch.fnmatch(file, tar.get()):
list1.insert(END, dirname + "--->" + str(r1))
else:
list1.insert(END, "File not found")
w=Tk()
b1 = Button(w, text="Search", command=findspec)
b1.grid(row=0, column=0, columnspan=2)
tar=StringVar()
e1 = Entry(w, textvariable=tar)
e1.grid(row=0, column=1, columnspan=4)
b2 = Button(w, text="Start", command=searchdir)
b2.grid(row=1, column=0, columnspan=2)
#listbox
list1=Listbox(w, height=17, width=75, selectmode=EXTENDED)
list1.grid(row=2, column=0, rowspan=7, columnspan=4, sticky=(N, S, E), pady=5, padx=5)
sb1=Scrollbar(w)
sb1.grid(row=2, column=4, rowspan=7, sticky='nsw', pady=5)
list1.configure(yscrollcommand=sb1.set)
sb1.configure(command=list1.yview)
sb2=Scrollbar(w, orient=HORIZONTAL)
sb2.grid(row=10, column=0, columnspan=4, sticky='esw', padx=5)
list1.configure(xscrollcommand=sb2.set)
sb2.configure(command=list1.xview)
list1.bind('<<ListboxSelect>>')
if __name__=='__main__':
w.mainloop()
Я что-то делаю не так, я что-то упускаю или что-то другое?
Любая помощь будет принята с благодарностью.