【发布时间】:2017-11-20 20:59:35
【问题描述】:
互联网一遍又一遍地告诉我使用 subprocess.Popen 和communicate() 方法来读写子进程的标准输入和标准输出;但是communicate() 的文档说它等待程序终止。我正在尝试使用 adb shell 打开和关闭手机摄像头上的视频录制。我想让 adb shell 进程已经打开,连接到设备,而不是每次运行时都连接。 这不起作用:
>>> import subprocess
>>> adb = subprocess.Popen(["adb", "shell"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> adb.stdin.write('ls/n')
>>> adb.stdout.read()
也不是这样:
>>> adb = subprocess.Popen(["adb", "shell"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> adb.communicate(input=b'ls')
两者都挂起。此命令在终端中按预期运行:
adb shell ls
我使用的是 Windows 7 64 位 Python 2.7.13。 我还阅读了 pexpect,但它的 spawn 类在 Windows 上不起作用。 所以我的问题是如何我可以从 Windows 上的 Python 2.7 创建子进程并与子进程重复通信。 谢谢。
【问题讨论】:
标签: android python windows python-2.7