Обычно я могу изменить stdout в Python путем изменения значения sys.stdout
. Однако это только, кажется, влияет print
операторы. Так, есть ли любой способ, которым я могу подавить вывод (к консоли) программы, которая запущена через os.system()
команда в Python?
Вы могли бы рассмотреть возможность запуска программы через 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
В системе unix вы можете перенаправить stderr и stdout в /dev/null как часть самой команды.
os.system(cmd + "> /dev/null 2>&1")
Если вы хотите полностью избавиться от консоли, которая запускается вместе с программой python, вы можете сохранить ее с расширением .pyw.
Возможно, я неправильно понимаю вопрос.