Перенаправление stdio из команды в os.system () в Python - PullRequest
7 голосов
/ 07 июля 2010

Обычно я могу изменить стандартный вывод в Python, изменив значение sys.stdout.Тем не менее, это только влияет на print заявления.Итак, есть ли способ, которым я могу подавить вывод (на консоль) программы, которая запускается с помощью команды os.system() в Python?

Ответы [ 4 ]

17 голосов
/ 07 июля 2010

Вы можете рассмотреть возможность запуска программы через subprocess.Popen, с subprocess.PIPE связью, а затем отправить эти выходные данные туда, где вы хотите, но, как есть, os.system просто запускает команду и ничего больше.

from subprocess import Popen, PIPE

p = Popen(['command', 'and', 'args'], stdout=PIPE, stderr=PIPE, stdin=PIPE)

output = p.stdout.read()
p.stdin.write(input)

Гораздо более гибким, на мой взгляд.Вы можете посмотреть полную документацию: Модуль подпроцесса Python

16 голосов
/ 07 июля 2010

В системе Unix вы можете перенаправить stderr и stdout в / dev / null как часть самой команды.

os.system(cmd + "> /dev/null 2>&1")
0 голосов
/ 07 июля 2010

Если вы хотите полностью исключить консоль, которая запускается с помощью программы python, вы можете сохранить ее с расширением .pyw.

Возможно, я неправильно понимаю вопрос.

0 голосов
/ 07 июля 2010

Перенаправить stderr, а также стандартный вывод.

...