Запустить скрипт Python для выбранного файла - PullRequest
15 голосов
/ 20 декабря 2011

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

После выбора команды Python запускает скрипт, который получает путь к файлу и имя файла для загрузки. Написание скрипта Python, который будет загружать файл в Интернет, кажется простым. Неясно, как создать сущность в контекстном меню Windows для скрипта Python. И как передать путь к файлу и имя файла в скрипт Python для отлова .... Пожалуйста, посоветуйте!

Ответы [ 4 ]

23 голосов
/ 20 декабря 2011

Предполагая Windows 7, если вы откроете папку и наберете «shell: sendto» в адресной строке, а затем нажмите «Enter», вы попадете в контекстное меню. Вы можете добавить файл .cmd со следующим:

@echo off
cls
python C:\Your\File\uploadscript.py %1

Это должно выполнить ваш скрипт на python, передав в файл (% 1) в качестве параметра. В скрипте Python вы можете использовать:

import sys
sys.argv  #sys.argv[1] is the file to upload

Это возвращает все переданные параметры, поэтому sys.argv[1] должен получить файл, который был передан. Я проверил это, и оно работает. Причина, по которой вам нужен файл .cmd вместо перехода прямо к .py, заключается в том, что файл .py не будет отображаться в меню «Отправить».

Дополнительная информация о передаче файла находится здесь:
Принятие аргумента файла в Python (из контекстного меню «Отправить в»)

РЕДАКТИРОВАТЬ: Добавление сценария для вызова нескольких файлов. Обратите внимание, что это вызывает скрипт Python для каждого отдельного файла. Если вы хотите отправить все файлы в качестве параметра скрипту Python, вам потребуется проделать немного больше работы. Вам нужно исследовать пакетный сценарий, если вы хотите делать более сложные вещи.

@echo off
cls
:upload_loop
IF "%1"=="" GOTO completed
  python C:\Your\File\uploadscript.py %1
  SHIFT
  GOTO upload_loop
:completed
4 голосов
/ 29 мая 2014

Вместо %1 используйте %*.

%1 передаст первый аргумент, %* передаст все (%n передаст n-й ...)

@echo off
cls
python C:\Your\File\uploadscript.py %*

Обратите внимание, что в командную строку встроены ограничения символов 2047 для XP и более ранних версий, 8191 для Windows 7 и более поздних версий

3 голосов
/ 29 мая 2014

Чтобы добавить такие вещи, как скрипты Python, в контекстное меню, вызываемое правой кнопкой мыши, также возможно добавить регистрационные ключи (regedit) в

\HKEY_CLASSES_ROOT\Directory\Background\shell

Там добавьте контейнер, назовите его строкой, которую хотите отобразить в контекстном меню. В него добавьте ключ типа REG_SZ, который содержит панель запуска сценариев Python, например,

C:\Python27\python.exe "C:\path\to\your\script\yourscript.py"

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

1 голос
/ 05 июля 2013

Эта веб-страница Добавление действий контекстного меню Windows имеет хороший скрипт на python, который зарегистрирует контекстное меню для передачи пути к файлу в ваш скрипт на python. Я не пробовал, но выглядит легко изменить этот образец для того, что вам нужно сделать. Кроме того, я думаю, это на один клик меньше, чем решение sendTo.

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