我希望从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的新手)
答案 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的便捷包装,可以简化您的使用案例。