파이썬 스크립트에서 Bash 명령의 결과를 확인하고 싶습니다. subprocess.check_output()
을 사용하고 있습니다. 서브 프로세스가 빈 문자열을 반환합니다.
[email protected]:~$ hostname
> something
[email protected]:~$ command -v apt
> /usr/bin/apt
이 그것은 기대 작품으로. 지금은 파이썬 인터프리터에서 subprocess.check_output()
기능을 실행하려고 해요 : 당신이 볼 수 있듯이 (이 빈 문자열을 반환으로), 첫 번째 명령은 두 번째 예상대로 작동되지 않지만,
>>> import subprocess
>>> subprocess.check_output(['hostname'], shell=True, stderr=subprocess.STDOUT)
b'something\n'
>>> subprocess.check_output(['command', '-v', 'apt'], shell=True, stderr=subprocess.STDOUT)
b''
. 왜 그런가요? 매개 변수에서
>>> subprocess.check_output(['command', '-v', 'apt'], stderr=subprocess.STDOUT)
Traceback (most recent call last):
[...]
FileNotFoundError: [Errno 2] No such file or directory: 'command'
'shell = True'를 제거하면 문제가 해결됩니다. 또한 두 번째 호출 –
대신'shutil.which ('apt')'를 사용할 수 있습니다. 왜 사람들은 기본적으로 shell = True를 설정합니까? –
기본적으로'shell = True'를 설정하지 않았습니다. 오류가 발생했기 때문에 추가했습니다. –