Как получить результат вызова скрипта из функции Python? - PullRequest
0 голосов
/ 21 июля 2010

Я хотел бы вызвать внешний скрипт из функции, например:

import subprocess

def call_script(script):
   subprocess.call(script)
   return answer #retrieving the result is the part I'm struggling with

call_script("/user/bin/calc_delta.py")

Скрипт calc_delta.py просто печатает результат, когда он сделан.Как я могу присвоить результат этого скрипта переменной?Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 июля 2010

Вместо использования subprocess.call вы должны использовать Popen и вызвать communicate для него.

Это позволит вам читать stdout и stderr. Вы также можете вводить данные с помощью stdin.

Пример из документов http://docs.python.org/library/subprocess.html#replacing-bin-sh-shell-backquote:

output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
3 голосов
/ 21 июля 2010

В Python ≥2.7 / ≥3.1 вы можете использовать subprocess.check_output для преобразования stdout в str.

answer = subprocess.check_output(['/usr/bin/calc_delta.py'])

Есть также subprocess.getstatusoutput и subprocess.getoutput в Python ≥3.1, если вам нужна команда оболочки, но она поддерживается только * NIX.

2 голосов
/ 21 июля 2010

Вы должны посмотреть на подпроцесс. Open ( popen )

Например (из документов):

pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout

subprocess.call только даствам код ответа на ваш звонок, а не вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...