Запустите функцию python, которая явно принимает аргументы из powershell (без передачи аргументов отдельно)
Я нашел ответ на другой вопрос переполнения стека о том, как вызвать определенную функцию def из файла python в командной строке, однако вызываемая функция не принимает никаких аргументов:
$ python -c 'from foo import hello; print hello()'
(Я удалил оператор печати, поскольку он казался излишним для моих нужд, и я просто вызываю функцию в этом случае)
Несколько ответов говорят об использовании разбора аргументов, но это потребует изменений в нескольких файлах, которые уже существуют и нежелательны.
Последний ответ на этот вопрос представляет, как делать то, что я хочу в bash (мне нужно знать, как это сделать в powershell)
$ ip='"hi"' ; fun_name='call_from_terminal' $ python -c "import ${fun_name} as cft; cft.test_term_fun(${ip})" hi
Вот мой код на Python
def operator (string): print( "Operator here, I got your message: ", string)
и из powershell я хочу назвать это что-то вроде:
$ python -c 'from myfile import operator; operator("my message here")'
Редактировать:
Литеральная команда, которую я печатаю в powershell
python -c 'from testscript import operator; operator("test")'
Литеральное сообщение об ошибке, которое я возвращаю
Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'test' is not defined
- Python, используя os.system – Есть ли способ, чтобы скрипт Python прошел мимо этого, не дожидаясь завершения вызова?
- Передача словарей в скрипт Python через командную строку
- Использование одной и той же опции более одного раза из командной строки в python
- Python – могу ли я знать, произошла ли печать или нет?
- Получить путь к текущему TTY в Python
Кажется, я понимаю проблему. PowerShell пропускает двойные кавычки в исполняемый файл, даже если вы указываете одинарные кавычки (он пытается быть полезным). Использование showargs.exe (см. http://windowsitpro.com/powershell/running-executables-powershell ):
PS C:\> showargs python -c 'from testscript import operator; operator("test")' python -c "from testscript import operator; operator("test")"
Вы должны уйти от "
символов в своей строке, чтобы перейти к интерпретатору python, либо следующим образом:
PS C:\> showargs python -c "from testscript import operator; operator(\""test\"")" python -c "from testscript import operator; operator(\"test\")"
или вот так:
PS C:\> showargs python -c "from testscript import operator; operator(\`"test\`")" python -c "from testscript import operator; operator(\"test\")"
- В чем разница между запуском ./file.py и python file.py?
- Как узнать, был ли запущен скрипт python с использованием опции -m интерпретатора?
- Как я могу указать, что некоторые аргументы командной строки являются обязательными в Python?
- ImportError: нет модуля с именем gdal
- pdfsplit vs pdftk, разделить pdf на куски
- Python: ответ на подсказки командной строки
- Запуск сценария R из командной строки (для выполнения с python)
- sys.argv не принимает предоставленный аргумент в python 3
- Как перемещаться во втором приглашении в python