如何从os.system()获取输出



我想从os.system("nslookup google.com")获得输出,但在打印时总是得到0。为什么会这样,我该如何解决?(Python 3,Mac)

(我看了如何在python中存储它打印到stdout的os.system的返回值?-但我不明白~我是python的新手)

使用subprocess:

import subprocess
print(subprocess.check_output(['nslookup', 'google.com']))

如果返回代码不为零,则会引发CalledProcessError异常:

try:
    print(subprocess.check_output(['nslookup', 'google.com']))
except subprocess.CalledProcessError as err:
    print(err)

os.system只返回命令的退出代码。这里0意味着成功。任何其他数字代表与操作系统相关的错误。输出进入该进程的stdout。子流程打算取代os.system

subprocess.check_output是一个方便的子流程包装器。Popen简化了您的用例。

最新更新