파이썬 코드에서 쉘 스크립트를 호출하는 방법은 무엇입니까?
답변
서브 프로세스 모듈은 당신을 도울 것입니다.
명백히 사소한 예 :
>>> import subprocess
>>> subprocess.call(['./test.sh']) # Thanks @Jim Dennis for suggesting the []
0
>>>
test.sh
간단한 쉘 스크립트는 어디에 있으며이 0
실행에 대한 리턴 값입니다.
답변
os.popen()
(더 이상 사용되지 않음) 또는 전체 subprocess
모듈을 사용하는 몇 가지 방법 이 있지만 이 방법은
import os
os.system(command)
가장 쉬운 방법 중 하나입니다.
답변
쉘 스크립트에 일부 매개 변수를 전달하려는 경우 shlex.split () 메소드를 사용할 수 있습니다 .
import subprocess
import shlex
subprocess.call(shlex.split('./test.sh param1 param2'))
와 test.sh
같은 폴더에 :
#!/bin/sh
echo $1
echo $2
exit 0
출력 :
$ python test.py
param1
param2
답변
import os
import sys
test.sh가 실행하려는 쉘 스크립트라고 가정
os.system("sh test.sh")
답변
위에서 언급 한대로 서브 프로세스 모듈을 사용하십시오.
나는 이것을 다음과 같이 사용한다 :
subprocess.call(["notepad"])
답변
파이썬 3.5를 실행 중이며 subprocess.call ([ ‘./ test.sh’])이 작동하지 않습니다.
나는 당신이 세 가지 해결책을 당신이 출력으로하고 싶은 것에 달려 있습니다.
1-스크립트를 호출하십시오. 터미널에 출력이 표시됩니다. 출력은 숫자입니다.
import subprocess
output = subprocess.call(['test.sh'])
2-문자열에 대한 호출 및 덤프 실행 및 오류. (stdout)을 인쇄하지 않으면 터미널에서 실행이 보이지 않습니다. Shell = Popen의 인수로 True가 작동하지 않습니다.
import subprocess
from subprocess import Popen, PIPE
session = subprocess.Popen(['test.sh'], stdout=PIPE, stderr=PIPE)
stdout, stderr = session.communicate()
if stderr:
raise Exception("Error "+str(stderr))
3-스크립트를 호출하고 temp_file에서 temp.txt의 에코 명령을 덤프하십시오.
import subprocess
temp_file = open("temp.txt",'w')
subprocess.call([executable], stdout=temp_file)
with open("temp.txt",'r') as file:
output = file.read()
print(output)
doc 하위 프로세스를 살펴 보는 것을 잊지 마십시오
답변
서브 프로세스 모듈은 서브 프로세스를 시작하기에 좋은 모듈입니다. 이를 사용하여 다음과 같이 쉘 명령을 호출 할 수 있습니다.
subprocess.call(["ls","-l"]);
#basic syntax
#subprocess.call(args, *)
당신은 그것의 문서를 볼 수 있습니다 여기에서 .
스크립트를 일부 .sh 파일이나 긴 문자열로 작성한 경우 os.system 모듈을 사용할 수 있습니다. 상당히 간단하고 전화하기 쉽습니다.
import os
os.system("your command here")
# or
os.system('sh file.sh')
이 명령은 스크립트를 한 번 실행하여 완료하고 종료 될 때까지 차단합니다.