«Открыть с помощью ...» файл в Windows, с помощью приложения Python - PullRequest
8 голосов
/ 01 ноября 2011

Я пытаюсь выяснить, как заставить программу на python открывать файл, когда пользователь щелкает файл правой кнопкой мыши и выбирает «Открыть с помощью».Например, я хочу, чтобы пользователь мог щелкнуть правой кнопкой мыши текстовый файл и выбрать свою программу, чтобы моя программа могла обрабатывать текстовый файл.Имя текстового файла передается в мою программу каким-либо образом?Спасибо.

Ответы [ 3 ]

3 голосов
/ 09 января 2012

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

Что вы можете сделать, это скомпилировать ваш скрипт с помощью py2exe , чтобы получить фактический исполняемый файл, который вы можете указать на экране «Открыть с помощью ...» (вы даже можете зарегистрировать его как значение по умолчанию для любой файл * .foo). Путь к файлу .foo в вашем скрипте должен быть sys.argv[1].

1 голос
/ 06 октября 2016

Мой подход - использовать перенаправляющий файл .bat, содержащий python someprogram.py %1.%1 передает путь к файлу в скрипт Python, который можно открыть с помощью
from sys import argv argv[1]

1 голос
/ 09 января 2012

Сначала вам нужно зарегистрировать свой скрипт для запуска с Python под ProgId в реестре. Как минимум, вам понадобится определенный глагол open :

HKEY_CURRENT_USER\Software\Classes\MyApp.ext\
  (Default) = "Friendly Name"
  DefaultIcon\
    (Default) = "path to .ico file"
  shell\
    open\
      command\
        (Default) = 'path\python.exe "path\to\your\script.py" "%L"'

Вы можете заменить HKEY_LOCAL_MACHINE, если вы устанавливаете на всей машине. * Существуют также соглашения о версиях, которые вы, вероятно, можете игнорировать. В разделе MSDN Типы файлов содержится более подробная информация.

Второй шаг - добавить ваш ProgId к OpenWithProdIds ключу расширения, для которого вы хотите появиться в списке:

HKEY_CURRENT_USER\Software\Classes\.ext\OpenWithProgIds
  MyApp.ext = None

Значение ключа не имеет значения, если имя точно соответствует вашему ProgId.


* Обратите внимание, что HKEY_CLASSES_ROOT на самом деле является поддельным ключом, который «содержит» объединение HKLM\Software\Classes и HKCU\Software\Classes; если вы пишете в реестр, вы должны выбрать один из реальных ключей. Вам не нужно повышать, чтобы установить в HKEY_CURRENT_USER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...