Python、adb和shell执行查询

标签 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 中的反引号获取原始输出

最佳答案

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

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

关于Python、adb和shell执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27603586/

相关文章:

android - 使用 ADB 发送消息的编码问题

android - 在android中使用adb命令安装apk时出现协议(protocol)失败错误

python - 如何使用连续列和分类列进行 tf.estimator

Python 在不干扰脚本的情况下休眠?

python - 如何从 python 调用带有 ref 和 out 参数的 C# 库函数?

python - 将两个系列合并/压缩到 ndarray 的 ndarray

python - 根据 ID 将 numpy 行转换为列

android - adb 将文件从/sdcard/复制到/data/data/package 没有 root 权限

android - 亚行没有回应。您可以等待更多,或者杀死 "adb.exe"... windows 8

android - Android 应用程序可以将自身复制到 Root设备上的系统目录吗?