У меня есть этот код:
def hello():
return 'Hi :)'
Как бы я запустить это прямо из командной строки?
python
function
command-line
Стивен
источник
источник
print "Hi :)"
вместоreturn 'Hi :)'
.Ответы:
С аргументом
-c
(команды) (при условии, что ваш файл названfoo.py
):В качестве альтернативы, если вас не волнует загрязнение пространства имен:
И золотая середина
источник
$python -c "import foo;foo.hello()"
print foo.hello()
наprint(foo.hello())
сделал. Я не обладаю знаниями Python, чтобы объяснить, почему это так, поэтому, если кто-то еще сможет объяснить, что может происходить, это будет с благодарностьюПросто поместите
hello()
где-нибудь ниже функции, и она будет выполняться, когда вы делаетеpython your_file.py
Для более аккуратного решения вы можете использовать это:
Таким образом, функция будет выполняться только при запуске файла, а не при импорте файла.
источник
hello()
принимать аргументы, которые должны быть предоставлены командной строкой?sys.argv
в метод. Или получить доступ к нему из Привет методhello()
нее) и запустить ее из командной строки?python -c 'from myfile import hello; hello()'
гдеmyfile
должно быть заменено базовым именем вашего скрипта Python. (Например,myfile.py
становитсяmyfile
).Однако, если
hello()
ваша «постоянная» основная точка входа в вашем скрипте Python, то обычный способ сделать это следующим образом:Это позволяет вам выполнить скрипт просто запустив
python myfile.py
илиpython -m myfile
.Некоторое объяснение здесь:
__name__
это специальная переменная Python, которая содержит имя выполняемого в данный момент модуля, кроме случаев, когда модуль запускается из командной строки, и в этом случае он становится"__main__"
.источник
python -m foo -c 'foo.bar()'
иpython -c 'import foo; foo.bar()'
? Я получаю другое поведение, когда кажется, что аргумент -c игнорируется в первом случае.Я написал небольшой скрипт на Python, который можно вызывать из командной строки bash. Он принимает имя модуля, класса и метода, который вы хотите вызвать, и параметры, которые вы хотите передать. Я назвал его PyRun, отключил расширение .py и сделал его исполняемым с помощью chmod + x PyRun, чтобы я мог просто быстро вызвать его, как показано ниже:
Сохраните это в файле с именем PyRun
Вот пример модуля, чтобы показать, как это работает. Это сохраняется в файле с именем PyTest.py:
Попробуйте запустить эти примеры:
Обратите внимание на последний пример экранирования скобок для передачи кортежа в качестве единственного параметра для метода Second.
Если вы передадите слишком мало параметров для того, что нужно методу, вы получите ошибку. Если вы пройдете слишком много, он игнорирует дополнительные. Модуль должен находиться в текущей рабочей папке, поставить PyRun можно в любом месте вашего пути.
источник
добавьте этот фрагмент в конец вашего скрипта
Теперь вы можете вызвать вашу функцию, запустив
Это работает, потому что вы передаете аргумент командной строки (строку имени функции) в
locals
словарь с текущей таблицей локальных символов. Парантезы в конце сделают функцию вызываемой.update: если вы хотите, чтобы функция принимала параметр из командной строки, вы можете передать
sys.argv[2]
вот так:Таким образом, бег
python myscript.py myfunction "hello"
будет выводитьhello
.источник
myfunction(12)
Давайте сделаем это немного проще для себя и просто используем модуль ...
Пытаться:
pip install compago
Затем написать:
Затем используйте так:
Примечание: в данный момент в Python 3 есть ошибка , но она прекрасно работает с Python 2.
Edit: даже лучший вариант, на мой взгляд , является модуль огня от Google , который позволяет легко передавать аргументы функции. Это установлено с
pip install fire
. Из их GitHub:Вот простой пример.
Затем из командной строки вы можете запустить:
источник
python -m fire file_name method_name
. Он также имеет встроенный argparser.Интересно, что если цель состояла в том, чтобы напечатать на консоль командной строки или выполнить какую-либо другую мелкую операцию на python, вы можете передать ввод в интерпретатор python следующим образом:
а также файлы труб ..
* Обратите внимание, что расширение не должно быть .py для второго, чтобы работать. ** Также обратите внимание, что для bash вам может понадобиться экранировать символы
источник
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Если вы устанавливаете пакет runp с
pip install runp
вопросом запуска:runp myfile.py hello
Вы можете найти репозиторий по адресу: https://github.com/vascop/runp
источник
У меня было требование использовать различные утилиты Python (диапазон, строка и т. Д.) В командной строке, и я специально для этого написал инструмент pyfunc . Вы можете использовать его, чтобы обогатить ваш опыт использования командной строки:
источник
Всегда есть возможность ввести python в командной строке с помощью команды python
затем импортируйте ваш файл, чтобы импортировать example_file
затем выполните команду с example_file.hello ()
Это позволяет избежать странной функции копирования .pyc, которая возникает при каждом запуске python -c и т. Д.
Может быть, не так удобно, как одиночная команда, но это хорошее быстрое решение для текстового файла из командной строки и позволяет использовать python для вызова и выполнения вашего файла.
источник
Примерно так: call_from_terminal.py
Это работает в Bash.
источник
Ниже приведен файл Odd_Even_function.py, в котором есть определение функции.
Теперь, чтобы вызвать то же самое из командной строки ниже, варианты работали для меня.
Параметры 1 Полный путь к exe \ python.exe -c "import Odd_Even_function; Odd_Even_function.OE (100)"
Вариант 2 Полный путь к exe \ python.exe -c "из Odd_Even_function import OE; OE (100)"
Спасибо.
источник
Эту функцию нельзя запустить из командной строки, так как она возвращает значение, которое останется без изменений. Вы можете удалить возврат и использовать вместо этого печать
источник
Используйте инструмент python-c ( pip install python-c ) и затем просто напишите:
или если в ваших файлах python нет столкновений с именами функций:
источник
Сначала вы должны вызвать функцию, как они сказали вам, или основание ничего не отобразит в выходных данных, после чего сохраните файл и скопируйте путь к файлу, щелкнув правой кнопкой мыши на папке файла и нажав «Копировать файл», затем зайдите в терминал и напишите: - cd "путь к файлу" - python "имя файла, например (main.py)", после чего он отобразит вывод вашего кода.
источник
Сделайте свою жизнь проще, установите Spyder. Откройте файл и запустите его (нажмите зеленую стрелку). После этого ваш
hello()
метод определяется и известен консоли IPython, поэтому вы можете вызывать его из консоли.источник