在python中运行进程到/ dev / null

时间:2013-01-06 13:05:07

标签: python linux

如何在Python中运行以下命令?

/some/path/and/exec arg > /dev/null

我明白了:

call(["/some/path/and/exec","arg"])

如何将exec进程的输出插入/dev/null并像往常一样保持python进程的打印输出?如同,请不要将所有内容重定向到stdout?

1 个答案:

答案 0 :(得分:7)

对于Python 3.3及更高版本,只需使用subprocess.DEVNULL

call(["/some/path/and/exec","arg"], stdout=DEVNULL, stderr=DEVNULL)

请注意,这会重定向stdoutstderr。如果您只想重定向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模块,所以这是你可以合理去的。