我不太熟悉 Python,但我对 Ruby 很熟悉。所以我将为我想要实现的目标提供类似物
在 Ruby 中我会
val = `adb devices`
获取存储在 val 中的 adb 设备的“原始输出”,以及
val=system("adb devices")
获取状态码
我想在 Python 中执行相同的任务。我看着
from subprocess import call
call(["adb devices"])
但是失败了,我不想使用 os.system 因为我想得到一些正确的错误处理。我如何使调用工作以及如何从 Python 中的反引号获取原始输出
将命令和参数作为列表的单独元素传递:
from subprocess import call
return_code = call(["adb", "devices"])
但是,这会将输出发送到标准输出,您无法捕获它。相反,您可以使用 subprocess.check_ouput()
:
from subprocess import check_output
adb_ouput = check_output(["adb", "devices"])
# stdout of adb in adb_output.
如果返回码非零,则引发异常。您应该捕获它以查看返回码是什么。返回代码 0 不会引发异常:
from subprocess import check_output, CalledProcessError
try:
adb_ouput = check_output(["adb", "devices"])
except CalledProcessError as e:
print e.returncode