我想从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简化了您的用例。