서브 프로세스 모듈을 사용하여 adb 바이너리 용 Python3에서 간단한 래퍼 모듈을 작성하고 있지만 '셸'명령은 한 번만 실행해도됩니다 명령 또는 인수없이 대화식 쉘을 실행하십시오.파이썬에서 대화 형 하위 프로세스 (예 : 셸)를 래핑하는 방법
GUI에서이 기능을 사용하기 위해 Vte와 같은 것을 사용할 수도 있지만, 내 기능이 정상적으로 돌아가는지 또는 내가 Popen을 사용해야하는지 이 인스턴스.
서브 프로세스 모듈을 사용하여 adb 바이너리 용 Python3에서 간단한 래퍼 모듈을 작성하고 있지만 '셸'명령은 한 번만 실행해도됩니다 명령 또는 인수없이 대화식 쉘을 실행하십시오.파이썬에서 대화 형 하위 프로세스 (예 : 셸)를 래핑하는 방법
GUI에서이 기능을 사용하기 위해 Vte와 같은 것을 사용할 수도 있지만, 내 기능이 정상적으로 돌아가는지 또는 내가 Popen을 사용해야하는지 이 인스턴스.
파이썬에서 ADB 용 래퍼를 구현할 때 subprocess 모듈을 사용하기로 결정했습니다. 나는 check_output(...) 함수가 유용하다는 것을 알았습니다. 왜냐하면 명령이 0 상태로 리턴 될 것이기 때문입니다. check_output(...)
에 의해 실행 된 명령이 0이 아닌 상태를 반환하면 CalledProcessError이 발생합니다. 특정 ADB
명령을 실행하지 못했음을 사용자에게보고하는 것보다 편리하다는 것을 알았습니다.
다음은이 방법을 구현 한 방법에 대한 스 니펫입니다. ADB wrapper의 구현을 참조하십시오.
def _run_command(self, cmd):
"""
Execute an adb command via the subprocess module. If the process exits with
a exit status of zero, the output is encapsulated into a ADBCommandResult and
returned. Otherwise, an ADBExecutionError is thrown.
"""
try:
output = check_output(cmd, stderr=subprocess.STDOUT)
return ADBCommandResult(0,output)
except CalledProcessError as e:
raise ADBProcessError(e.cmd, e.returncode, e.output)
죄송합니다. 4 년간 귀하의 답변을 보지 못했습니다. –