파이썬 코드에서 쉘 스크립트를 호출하는 방법은 무엇입니까? 코드에서 쉘 스크립트를 호출하는 방법은 무엇입니까?

파이썬 코드에서 쉘 스크립트를 호출하는 방법은 무엇입니까?



답변

서브 프로세스 모듈은 당신을 도울 것입니다.

명백히 사소한 예 :

>>> 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')

이 명령은 스크립트를 한 번 실행하여 완료하고 종료 될 때까지 차단합니다.