关于stdout:从Python中的os.system()命令重定向stdio

Redirecting stdio from a command in os.system() in Python

通常我可以通过更改sys.stdout的值来更改Python中的stdout。 但是,这似乎只会影响print语句。 那么,有什么方法可以抑制在Python中通过os.system()命令运行的程序的输出(到控制台)?


您可以考虑通过subprocess.Popen运行程序,通过subprocess.PIPE通信,然后将输出推送到任何您想要的位置,但是按原样,os.system只运行命令,而不是其他任何内容。

1
2
3
4
5
6
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模块


在unix系统上,您可以将stderr和stdout重定向到/ dev / null作为命令本身的一部分。

1
os.system(cmd +"> /dev/null 2>&1")


如果要完全消除使用python程序启动的控制台,可以使用.pyw扩展名保存它。

不过,我可能会误解这个问题。


重定向stderr以及stdout。