Python,adb和shell执行查询

时间:2014-12-22 13:22:24

标签: python adb

我对Python并不熟悉,但我使用Ruby。所以我会为我想要实现的目标提供类比

在Ruby中我会

val = `adb devices`

获得"原始输出"存储在val和

中的adb设备
val=system("adb devices")

获取状态代码

我想在Python中执行相同的任务。我看了

from subprocess import call
call(["adb devices"])

但是失败了,我不想使用os.system,因为我想得到一些正确的错误处理。我如何进行调用工作以及如何从Python中获取反引号的原始输出

1 个答案:

答案 0 :(得分:4)

将命令和参数作为列表的单独元素传递:

from subprocess import call
return_code = call(["adb", "devices"])

但是,这会将输出发送到stdout,您无法捕获它。相反,您可以使用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