通常我可以通过更改sys.stdout
. 但是,这似乎只影响print
语句。os.system()
那么,有什么方法可以抑制通过Python中的命令运行的程序的输出(到控制台) ?
问问题
41974 次
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 回答