Как избежать вывода os.system () возвращаемого значения в python - PullRequest
2 голосов
/ 11 января 2012

Я использую Python для вызова bash для выполнения другого сценария bash:

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

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

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

Ответы [ 3 ]

7 голосов
/ 11 января 2012

На самом деле, result - это только возвращаемый статус в виде целого числа.Вещество, которое вы вызываете, записывает в стандартный вывод, который он наследует от вашей программы, поэтому вы сразу видите, что оно распечатано.Он никогда не доступен для вашей программы.

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

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

Включение захвата вывода и вызова оболочек различными способами.

5 голосов
/ 11 января 2012

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

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

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

2 голосов
/ 11 января 2012

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

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