9

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

4

4 回答 4

26

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

os.system(cmd + "> /dev/null 2>&1")
于 2010-07-07T18:07:38.450 回答
18

您可以考虑通过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 模块

于 2010-07-07T18:09:39.383 回答
0

重定向标准错误和标准输出。

于 2010-07-07T18:02:11.697 回答
0

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

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

于 2010-07-07T18:09:02.587 回答