Запустите Python Script в выбранном файле

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

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

Ответ 1

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

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

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

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

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

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

EDIT: добавление script для вызова нескольких файлов. Обратите внимание, что это вызывает python script для каждого отдельного файла, если вы хотите отправить все файлы в качестве параметра в python script, тогда вам нужно будет немного поработать. Вам нужно исследовать пакетный скриптинг, если вы хотите делать более сложные вещи.

@echo off
cls
:upload_loop
IF "%1"=="" GOTO completed
  python C:\Your\File\uploadscript.py %1
  SHIFT
  GOTO upload_loop
:completed

Ответ 2

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

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

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

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

Ответ 3

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

\HKEY_CLASSES_ROOT\Directory\Background\shell

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

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

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

Ответ 4

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