Python에서 Bash 명령 실행
서버의 Python 스크립트 내에서 Bash 명령을 실행할 때 동일한 코드가 있더라도 오류가 발생할 수 있습니다. 로컬에서 작동합니다. 이에 대한 일반적인 이유 중 하나는 운영 체제에서 Bash를 호출하는 다양한 방식 때문입니다.
Bash 이해
Python에서는 subprocess 모듈을 사용하여 Bash 명령을 실행할 수 있습니다. 그러나 기본 동작은 Bash의 모든 기능을 지원하지 않는 최소 셸인 /bin/sh를 사용하는 것입니다. Bash 관련 구문이 필요한 경우 Bash 실행 파일을 다음과 같이 명시적으로 지정해야 합니다.
subprocess.run(command, shell=True, executable='/bin/bash')
Shell vs. No Shell
subprocess.run( ) shell=True 또는 shell=False입니다. shell=True를 사용하면 쉘이 구문 분석하는 단일 문자열 명령을 제공합니다. shell=False를 사용하면 셸을 사용하지 않고 문자열 인수 목록을 실행 파일에 전달합니다.
shell=False를 사용하면 셸 기능을 피할 수 있지만 명령을 인수로 정확하게 구문 분석해야 합니다. shlex.split() 함수가 이를 지원할 수 있습니다.
subprocess.run(shlex.split(command)) # shell=False
텍스트 디코딩
기본적으로 하위 프로세스 출력은 바이트로 제공됩니다. 유니코드 문자열로 디코딩하려면 text=True를 사용하세요.
subprocess.run(command, shell=True, text=True)
문제 해결
계속 오류가 발생하는 경우 다음을 확인하는 것이 중요합니다.
위 내용은 내 Bash 명령이 서버의 Python에서는 실패하지만 로컬에서는 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!