Перенаправление stdio от команды в os.system () в Python

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

7
задан Yu Hao 14 July 2016 в 06:14
поделиться

4 ответа

Вы могли бы рассмотреть возможность запуска программы через 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 Subprocess module

17
ответ дан 6 December 2019 в 05:42
поделиться

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

os.system(cmd + "> /dev/null 2>&1")
16
ответ дан 6 December 2019 в 05:42
поделиться

Перенаправить stderr, а также stdout.

0
ответ дан 6 December 2019 в 05:42
поделиться

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

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

0
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

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