Файловый каталог Tkinter.askdirectory() не может найти внешние диски

#python #tkinter #filedialog

Вопрос:

На прошлой неделе я создал программу синхронизации папок, которую я хотел в первую очередь развернуть, чтобы иметь простой способ обновления копий безопасности на внешнем жестком диске или на моем телефоне, вместо того, чтобы удалять все и копировать все, что каждый раз может занимать время с файлами в тысячах и гигабайтах. Программа была уже закончена и работала в моей разнообразной серии тестов с одним фатальным недостатком: я тестировал ее только на самом компьютере, но когда я наконец захотел скопировать реальные данные, мне пришлось обнаружить, что диалоговое окно tkinter не распознает никаких внешних устройств. Здесь отображается экран, показывающий устройство в проводнике и отсутствующий в диалоговом окне: введите описание изображения здесь

Я некоторое время искал вокруг, и мне кажется, что решение tkinter просто функционально обеднено и неполно, поэтому мне придется поискать где-нибудь в другом месте. В одном ответе кто-то рекомендовал написать где-нибудь свой собственный диалог выбора папки, но я еще не нашел указаний, как это сделать.(например, есть ли функция ОС, которую я мог бы вызвать? возможно, модуль, который обеспечивает больший контроль?) Может быть, ткинтера даже можно спасти, хотя я в этом сомневаюсь.

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

1. Это устройство, а не диск. Вы не можете увидеть это событие в разделе «Управление диском» в разделе «Управление компьютером»Windows.

Ответ №1:

Если вы используете внешнее устройство через USB, вы можете попробовать PyUSB кросс-платформенный подход. Модуль PyUSB обеспечивает Python легкий доступ к системе универсальной последовательной шины (USB) хост-машины. Или вы можете попробовать использовать PyWin32 для вызова Windows API.

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

1. Таким образом, не изменится тот факт, что вы не смогли использовать файловый журнал tkinters. Кроме того, почему бы вам не обратиться к pathlib или модулю ОС, а не к внешним библиотекам?

2. @Thingamabobs согласен, это тоже может сработать.

3. @Thingamabobs Как модуль ОС может это сделать? Я специально искал это перед вопросом, но я всегда нахожу только людей, рекомендующих обрабатывать выбор папок с помощью tkinter.