хранение пути к файлу с помощью браузера Windows Explorer в Python - PullRequest
0 голосов
/ 04 сентября 2010

Я написал некоторый код шифрования в python, который принимает необработанное входное сообщение от пользователя, а затем шифрует и дешифрует его с помощью AES.Теперь я хочу улучшить работу, и я хочу, чтобы я мог открыть Windows Explorer из моего кода и перейти к любому файлу на моем компьютере, выбрать его, и когда я нажимаю кнопку ОК, путь к файлу сохраняется в переменной, чтобы я мог использоватьэто для обработки.

У меня есть поиск на многих форумах, мне удалось открыть Windows Explorer, но нет традиционной кнопки ОК и Отмена.Если пользователь нажимает кнопку OK, путь к файлу должен быть сохранен в моей переменной кода.

Любая помощь в этом отношении будет высоко оценена.

более того, просто чтобы вы знали, что я использовалследующий код:

import os
os.system ("start.")

, но в окне проводника нет кнопки отмены или кнопки ОК.Пожалуйста, помогите

1 Ответ

6 голосов
/ 04 сентября 2010

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

Open file dialog

Существуют различные способы открытия общего открытого диалога, и наиболее простым, вероятно, является использование модуля Tkinter из стандартной библиотеки Python, а именно модуля askopenfilename.

модуля tkFileDialog.

Пример кода:

import Tkinter
import tkFileDialog

root = Tkinter.Tk()
root.withdraw()

filename = tkFileDialog.askopenfilename(parent=root,title='Open file to encrypt')

Что касается фигурных скобок: вы используете askopenfilenames, чтобы сообщить Tk, что вы, возможно, хотите иметь более одного имени файла. Вот почему вы получаете список имен файлов, заключенных в фигурные скобки. Я на самом деле подозреваю упущение в связывании Tk в Python, так что имена файлов не разделяются и список возвращается, но это легко исправить, используя код, подобный следующему:

import re
# ...
# ...
filenames = tkFileDialog.askopenfilenames(parent=root)
files_to_process = re.split("\}\W\{", filenames[1:-1])

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

...