从 Python 中的 os.system() 中的命令重定向 stdio

新手上路,请多包涵

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

原文由 Leif Andersen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 823
2 个回答

您可以考虑通过 subprocess.Popen 运行程序,使用 subprocess.PIPE 通信,然后将该输出推送到您想要的任何位置,但按原样, os.system 只运行 the命令,仅此而已。

 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 模块

原文由 Blue Peppers 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

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

原文由 ealdent 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题