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

Kam*_*Dev 7 python subprocess os.system python-3.x

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

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

Mik*_*ler 9

使用subprocess

import subprocess
print(subprocess.check_output(['nslookup', 'google.com']))
Run Code Online (Sandbox Code Playgroud)

如果返回码不为零,它将引发CalledProcessError异常:

try:
    print(subprocess.check_output(['nslookup', 'google.com']))
except subprocess.CalledProcessError as err:
    print(err)
Run Code Online (Sandbox Code Playgroud)

os.system只返回命令的退出代码。这里0意味着成功。任何其他数字代表与操作系统相关的错误。输出到此过程的标准输出。子进程打算替换os.system.

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

  • 有用。但是你能解释为什么 os.system(command) 不打印输出吗?(我是 Python 新手) (5认同)