如何在Python中运行以下命令?
/some/path/and/exec arg > /dev/null
我明白了:
call(["/some/path/and/exec","arg"])
如何将exec
进程的输出插入/dev/null
并像往常一样保持python进程的打印输出?如同,请不要将所有内容重定向到stdout?
答案 0 :(得分:7)
对于Python 3.3及更高版本,只需使用subprocess.DEVNULL
:
call(["/some/path/and/exec","arg"], stdout=DEVNULL, stderr=DEVNULL)
请注意,这会重定向stdout
和stderr
。如果您只想重定向stdout
(正如您的sh
行暗示的那样),请忽略stderr=DEVNULL
部分。
如果您需要与旧版本兼容,则可以使用os.devnull
。因此,这适用于从2.6开始(包括3.3)的所有内容:
with open(os.devnull, 'w') as devnull:
call(["/some/path/and/exec","arg"], stdout=devnull, stderr=devnull)
或者,对于2.4及更高版本(仍然包括3.3):
devnull = open(os.devnull, 'w')
try:
call(["/some/path/and/exec","arg"], stdout=devnull, stderr=devnull)
finally:
devnull.close()
在2.4之前,没有subprocess
模块,所以这是你可以合理去的。