2012-01-11 5 views
1

Я использую Python для вызова Баша, чтобы выполнить другую Баш скрипт:Как избежать os.system() распечатываний возвращаемого значения в питоне

begin = int(sys.argv[1]) 
result = os.system("/tesladata/isetools/cdISE.bash %s" %begin) 

После я напечатал result, она не только дает мне выход но и статус возврата (0 здесь). Что делать, если мне нужен только вывод?

А также, просто для любопытства, сколько способов вызвать баш в Python? Я буду рад, если кто-нибудь может дать мне некоторые рекомендации о том, как их использовать, я нашел только os.system() и os.popen().

+0

Ваш второй вопрос обсуждался здесь (http://stackoverflow.com/questions/3479728/is-it-good-style-to-call-bash-commands-within-a-python-script-using-os- systemb) и (http://stackoverflow.com/questions/4256107/running-bash-commands-in-python) Здесь – Bry6n

ответ

7

Фактически, result - это только возвращаемый статус как целое число. То, что вы вызываете, записывает в stdout, который он наследует из вашей программы, поэтому вы видите его распечатанным немедленно. Это никогда не будет доступно вашей программе.

Заканчивать модуль подпроцесса документов для получения дополнительной информации:

http://docs.python.org/library/subprocess.html

В том числе захвата вывода, и применения снарядов по-разному.

+4

В частности, похоже, что он хочет [subprocess.check_output] (http://docs.python.org/library/subprocess.html#subprocess.check_output) –

3

Вы можете просто выбросить любой выход по трубопроводу до /dev/null.

begin = int(sys.argv[1]) 
result = os.system("/tesladata/isetools/cdISE.bash %s > /dev/null" %begin) 

Если вы не хотите отображать ошибки либо измените > на 2&> отбрасывать stderr, а также.

2

Ваш скрипт python вообще не имеет выходного сценария bash, но возвращается только «0». Результат скрипта bash перешел в тот же выходной поток, что и скрипт python, и напечатал перед тем, как напечатать значение результата. Если вы не хотите видеть 0, не печатайте результат.

+0

Спасибо за ваш ответ. Я думаю, вы правы, но что, если я хочу получить выход из сценария bash и сохранить его где-то еще? –

+0

@ dazhuangcao, если вы хотите выход, используйте os.popen или subprocess –

Смежные вопросы