gpt4 book ai didi

android - 将 grep 与 python subprocess.check_output 和 adb logcat 结合使用

转载 作者:行者123 更新时间:2023-11-28 20:31:46 34 4
gpt4 key购买 nike

我正在尝试编写一个 python 函数来捕获 android 设备获取 gps 修复所需的时间。我想通过捕获提到系统时间与 GPS 同步的 logcat 记录的时间戳来做到这一点。所以我提交了一个带有时间戳的 adb logcat 和 grep 用于“设置系统时间”。我想将此行的时间戳值赋予一个变量。具体来说,我想捕获此行的字符 10-18,因为这反射(reflect)了设备启动的确切时间。一旦检测到字符串,我希望函数退出并继续我的程序。

我尝试以下操作:

cmdtimegps='adb logcat -v time| grep "Setting system time at"'
w=subprocess.check_output(cmdtimegps.split())
print w

我的主要问题是使命令 (adb logcat -v time| grep SetTimeFromGPSService) 起作用。我收到“/system/bin/sh: grep: not found”错误。非常欢迎任何对此的帮助或对以下步骤的建议。非常感谢,

最佳答案

你有几个问题。首先,这是一个管道 shell 命令,因此您需要传递字符串而不将其拆分为列表并设置 shell=True。其次,check_output 在这里是一个糟糕的选择,因为它仅在程序终止后返回,但您的特定命令将永远运行。

更好的解决方案是停止 grepping 并让 python 处理命令。然后当你看到你想要的数据时,你就可以杀死它。

proc = subprocess.Popen(['adb', 'logcat', '-v', 'time'], stdout=subprocess.PIPE)
for line in proc.stdout:
if "Setting system time at" in line:
proc.kill()
break
proc.wait()

关于android - 将 grep 与 python subprocess.check_output 和 adb logcat 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19513345/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com