Как использовать проводник файлов Windows для выбора и возврата каталога с помощью Python?

#python #python-3.x #tkinter #filesystems

Вопрос:

У меня есть скрипт, который удаляет файлы с удаленных сетевых узлов и сохраняет их на удаленном диске. Прямо сейчас моим сценариям требуется жестко закодированное место назначения для его местоположения, например:

 dest_path_cfg = f"G:\path\to\my\folder"
 

Я хотел бы обновить этот скрипт, чтобы пользователь, запустивший его, мог выбрать папку, которую он хотел использовать для сохранения файлов через проводник. Я видел, как я могу использовать:

 import subprocess
subprocess.Popen(r'explorer /select,"C:pathoffolderfile"')
 

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

Сейчас я рассматриваю только совместимость с Windows, но в будущем я хотел бы добавить гибкость Mac/Linux.

Ответ №1:

Вы можете использовать модуль Tkinter Python, который содержит эту функцию filedialog.askdirectory() . Это откроет стандартное диалоговое окно выбора папки Windows.

 import tkinter
from tkinter import filedialog

tkinter.Tk().withdraw() # prevents an empty tkinter window from appearing

folder_path = filedialog.askdirectory()
 

Документация диалоговых окон Tkinter

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

1. Вы также можете упростить это и написать tkinter.Tk().withdraw() .

2. Я попробовал оба этих метода, и я не вижу, как заполняется окно проводника. Мой экран ненадолго мигает, а затем мой код зависает. Не уверен, почему не отображается проводник файлов. Я бы предположил, что если окно заполняется правильно, то оно будет ждать, пока я выберу папку и нажму «ок», прежде чем пытаться продолжить, верно?

3. После некоторой настройки я смог заставить его работать. Спасибо! Очень признателен!

4. Без проблем. (Вы также можете принять ответ, если он решит вашу проблему)