назначение стоимости обстрелять переменную, используя возвращаемое значение функции от Пайтона

Я сделал, чтобы Пайтон функционировал, fooPy (), который возвращает некоторую стоимость. (интервал / удваивается или последовательность),

Я хочу использовать эту стоимость и назначить ее в скрипте оболочки. Например, следующее - функция питона:

def fooPy():
    return "some string" 
    #return 10  .. alternatively, it can be an int

fooPy()

В скрипте оболочки я попробовал следующие вещи, но ни один из них не работает.

fooShell = python fooPy.py
#fooShell = $(python fooPy.py)
#fooShell = echo "$(python fooPy.py)"
12
задан cppb 22 January 2010 в 07:04
поделиться

4 ответа

-

Вы можете распечатать ваше значение в Python, как это:

print fooPy()

и в вашем скрипте оболочки:

fooShell=$(python fooPy.py)

обязательно не оставляйте пробелы вокруг = в Скрипт оболочки.

34
ответ дан 2 December 2019 в 03:04
поделиться

В вашем коде Python вам необходимо распечатать результат.

import sys
def fooPy():
    return 10 # or whatever

if __name__ == '__main__':
    sys.stdout.write("%s\n", fooPy())

Затем в оболочке вы можете сделать:

fooShell=$(python fooPy.py) # note no space around the '='

Обратите внимание, что я добавил , если __name__ == '__main __' Проверьте в код Python, чтобы убедиться, что печать выполняется только в том случае Программа запускается из командной строки, а не при импорте ее из интерпретатора Python.

Я также использовал SYSSTDOUT.WRITE () вместо Print , потому что

  • Print имеет разное поведение в Python 2 и Python 3,
  • В «реальных программах» следует использовать Sys.Stdout.write () вместо Print В любом случае: -)
11
ответ дан 2 December 2019 в 03:04
поделиться

Вы должны Печать Значение, возвращенное FOOPY . Замена оболочки читается из Stdout. Замените последнюю строку своей программы с помощью Print Fapy () , а затем используйте второй трубопровод оболочки, который вы упомянули. Он должен работать.

3
ответ дан 2 December 2019 в 03:04
поделиться

Разработка демонстрация использует Facelets, поэтому я бы даже сказал, что это рекомендуется.

-121--3653544--

Если вы хотите, если вы хотите, если вы хотите, чтобы значение из выписки Python Sysexit , он будет в специальной переменной оболочке $? .

$ var=$(foo.py)
$ returnval=$?
$ echo $var
Some string
$ echo returnval
10
5
ответ дан 2 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: