1

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

我尝试以下方法:

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”错误。非常欢迎对此提供任何帮助或有关以下步骤的建议。提前谢谢了,

4

1 回答 1

3

你有几个问题。首先,这是一个管道 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()
于 2013-10-22T10:01:01.063 回答