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

时间:2015-12-23 08:43:13

标签: python-3.x os.system

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

(我看了How to store the return value of os.system that it has printed to stdout in python? - 但我不理解它〜我是python的新手)

1 个答案:

答案 0 :(得分:3)

使用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意味着成功。任何其他数字代表依赖于操作系统的错误。输出转到此过程的标准输出。 subprocess打算替换os.system

subprocess.check_output是围绕subprocess.Popen的便捷包装,可以简化您的使用案例。