(가) 의심 할 여지없이 권한 문제입니다 ... 작동합니다. "직접"파일을 실행할 수있게하려면 ("점 슬래시"- ./yourfile
) 문제의 파일에 "실행 비트"세트가 필요합니다. 방금 작성한 파일을 보려면 ls -l
을 사용해보십시오. 나는 파일이 하지 않습니다 겠지 실행 비트가 :
$ ls -l ./step.sh
-rw-r--r-- 1 furkan furkan 0 Nov 13 20:51 step.sh
참고 첫 번째 열에서 x
의 부족. 당신은 chmod
실행 비트 추가 할 수 있습니다 실행 비트 세트와
$ chmod +x ./step.sh
$ ls -l ./step.sh
-rwxr-xr-x 1 furkan furkan 0 Nov 13 20:51 step.sh
를, 당신은 다음 "점 슬래시"를 사용할 수 있습니다 구성.
shellscript=subprocess.Popen(['sh', './step1.sh'], stdin=subprocess.PIPE)
을 또는 간단한 경우 : 그러나
, 난 당신이, 당신은 즉 step.sh
를 실행하려면 스크립트 sh
을 실제 프로그램을 말 대신 스크립트 내에서 chmod
을 실행, 그래서하려는 의심 당신이 강인한하는 경우
shellscript=subprocess.Popen(['sudo', 'yourexecutable'], stdin=subprocess.PIPE)
주
, 나는 약간의 절대 경로를 추가하거나 보장 고려할 수 있음 : 귀하의 예제로, 단순히 sudo를로 직접 이동 PATH 변수가 설정됩니다. 그러나 문제의 열쇠는 '실행 가능'이란 무엇을 의미하는지에 대한 오해입니다.
먼저'text = 'somecode'를 시도하십시오. ("sudo"제거) –
@MadLee 추적 (최근 호출 마지막) : 파일 "/home/pi/shcreater.py", 줄 12, shellscript = subprocess.Popen ([ './ step1.sh' ], stdin = subprocess.PIPE) 파일 "/usr/lib/python3.5/subprocess.py", 676 줄, __init__ restore_signals, start_new_session) 파일 "/usr/lib/python3.5/subprocess.py ", 줄 1282, _execute_child에 raise child_exception_type (errno_num, err_msg) OSError : [Errno 8] Exec 형식 오류 –