Запустите 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, которое я предполагаю.