Найдите файл и сохраните путь к нему в функции

#python #file #tkinter #directory

#python #файл #tkinter #каталог

Вопрос:

Я создал функцию, которая ищет файл .txt в папке, а затем считывает его и печатает результаты в другом файле .txt.

 import os


# this will check for the file list file in the d3 folder

def file_list():
    for f_name in os.listdir('D:\d3 Projects\python_test'):

        if f_name.endswith('.txt'):
            print(f_name)

            # this will read and print the filelist.txt file

            myfile = open("D:\d3 Projects\python_test\filelist.txt", "r")
            contents = myfile.read()
            myfile.close()
            print(contents)


if __name__ == "__main__":
    file_list()
 

Теперь я хотел бы сделать путь ввода и путь вывода выбираемыми пользователем с помощью небольшого интерфейса. (Я думал использовать tkinter.)

Есть идеи о том, как я могу это сделать? Я смог создать окно и кнопку просмотра, но я не знаю, как сохранить его в своей функции.

Комментарии:

1. Tkinter поддерживает собственные диалоговые окна файлов .

Ответ №1:

Вы можете попробовать это:

 from tkinter import *
from tkinter import ttk
from tkinter import filedialog
 
 
 
class Root(Tk):
    def __init__(self):
        super(Root, self).__init__()
        self.title("Python Tkinter Dialog Widget")
        self.minsize(640, 400)
        self.wm_iconbitmap('icon.ico')
 
        self.labelFrame = ttk.LabelFrame(self, text = "Open File")
        self.labelFrame.grid(column = 0, row = 1, padx = 20, pady = 20)
 
        self.button()
 
 
 
    def button(self):
        self.button = ttk.Button(self.labelFrame, text = "Browse A File",command = self.fileDialog)
        self.button.grid(column = 1, row = 1)
 
 
    def fileDialog(self):
 
        self.filename = filedialog.askopenfilename(initialdir =  "/", title = "Select A File", filetype =
        (("jpeg files","*.jpg"),("all files","*.*")) )
        self.label = ttk.Label(self.labelFrame, text = "")
        self.label.grid(column = 1, row = 2)
        self.label.configure(text = self.filename)
 
 
 
 
 
root = Root()
root.mainloop()
 

Комментарии:

1. Вы можете попробовать это для небольшого интерфейса

2. Извините за задержку. Я создал интерфейс, я просто хотел понять, как сохранить путь, который я получаю из диалога с файлом, в моей функции. Здесь: