我对Python并不熟悉,但我使用Ruby。所以我会为我想要实现的目标提供类比
在Ruby中我会
val = `adb devices`
获得"原始输出"存储在val和
中的adb设备val=system("adb devices")
获取状态代码
我想在Python中执行相同的任务。我看了
from subprocess import call
call(["adb devices"])
但是失败了,我不想使用os.system,因为我想得到一些正确的错误处理。我如何进行调用工作以及如何从Python中获取反引号的原始输出
答案 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