두 장치를 내 PC에 연결하고 python 및 adb를 사용하여 명령을 실행하려고합니다. 명령 프롬프트에서 명령을 실행하면 문제가 없지만 파이썬 스크립트에 입력하면 오류가 발생합니다. 내가 grep 명령없이 동일한 코드를하려고하면, 그것은subprocess.check_output 명령을 실행하는 데 실패하지만 Windows에서 동일하게 작동합니다.
adb_ouput = check_output(["adb","devices","-l"])
작동
Usage: adb devices [-l]
Command '['adb', 'devices', '-l', '|', 'grep', '"model"']' returned non-zero exit status 1
:
이from subprocess import check_output, CalledProcessError
try:
adb_ouput = check_output(["adb","devices","-l","|", "grep", "\"model\""])
print adb_ouput
except CalledProcessError as e:
print e
내가 오류 메시지는 이것이다 : 이 오류 모든 시간을 일으키는
정확한 출력을 제공합니다.
내가 Windows 명령 프롬프트에서 똑같이 해보았을 때 잘 동작한다. (창에서 사용하고 있기 때문에 grep을 FINDSTR로 바꾼다. 그리고 파이썬 스크립트에서도 똑같이하려고 시도했다. 'shell = 사실 '도없이)
예 :.
adb devices -l | FINDSTR "model"
이 나에게 어떤 문제없이 ouptut을 제공합니다. 내가 얻을 출력은
123ab6ef 장치 제품 : XXXXXXXXX 모델 : XXXXXXXXX 장치 : XXXXXXXXX
bd00051a4 장치 제품 : YYYYYYYYYY 모델 : YYYYYYYYYY 장치 : 내가 어디에 이해하려고 노력하고 YYYYYYYYY
나는 여기서 잘못 가고 있지만 그것을 이해할 수는 없다. 지금까지 문서를 확인했습니다 : https://docs.python.org/3/library/subprocess.html https://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError 다음은 오류 코드입니다.
다음 답변도 살펴 보았습니다. Python, adb and shell execution query 여기에서 오류를 검사하고 제 코드에 추가했습니다. python check_output fails with exit status 1 but Popen works for same command
Python subprocess.check_output(args) fails, while args executed via Windows command line work OK
나는 내가 가까이 모르지만, 그냥 내 손가락을 넣지 수 있다고 생각합니다. 도움이 될 것입니다.
따옴표없이 시도했지만 실패합니다. grep을 사용하는 대신 python으로 출력을 필터링하는 중입니다. 답변 해주셔서 감사합니다. –
왜 작동하지 않는지 이해할 수 없지만 어쨌든 두 번째 솔루션이 더 좋습니다. 'grep '을 가지고 있지 않은 머신에 이것을 두는 것을 상상할 수도 있습니다. –