python 내에서 bash 스크립트 실행 중
다음 코드에 문제가 있습니다.
callBash.py :
import subprocess
print "start"
subprocess.call("sleep.sh")
print "end"
sleep.sh :
sleep 10
저는 "끝"이 10초 후에 인쇄되기를 원합니다. (이것이 멍청한 예라는 것을 알고 있습니다. 저는 파이썬 안에서 간단히 잘 수 있었지만, 이 간단한 sleep.sh 파일은 그냥 테스트였습니다.)
sleep.sh 실행 파일로 만들기 및 추가shell=True
매개 변수 목록(이전 답변에서 제안한 대로)은 정상적으로 작동합니다.검색 경로에 따라 추가해야 할 수도 있습니다../
또는 다른 적절한 경로. (즉, 변경)"sleep.sh"
로."./sleep.sh"
.)
그shell=True
bash 스크립트의 첫 번째 줄이 셸에 대한 경로인 경우(예: Linux와 같은 Posix 시스템에서는) 매개 변수가 필요하지 않습니다.#!/bin/bash
.
한다면sleep.sh
셰뱅이 나다#!/bin/sh
적절한 파일 권한이 있습니다. 실행chmod u+rx sleep.sh
확실히 하기 위해 그리고 그것은 안에 있습니다.$PATH
그러면 코드가 다음과 같이 작동합니다.
import subprocess
rc = subprocess.call("sleep.sh")
스크립트가 PATH에 없으면 항목에 대한 전체 경로를 지정합니다(예: 현재 작업 디렉토리에 있는 경우).
from subprocess import call
rc = call("./sleep.sh")
스크립트에 셰방이 없으면 다음을 지정해야 합니다.shell=True
:
rc = call("./sleep.sh", shell=True)
스크립트에 실행 권한이 없고 실행을 통해 스크립트를 변경할 수 없는 경우os.chmod('sleep.sh', 0o755)
그런 다음 스크립트를 텍스트 파일로 읽고 문자열을 전달할 수 있습니다.subprocess
대신 모듈:
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)
인수가 있는 스크립트를 호출하려는 경우
import subprocess
val = subprocess.check_call("./script.sh '%s'" % arg, shell=True)
str(arg)를 사용하여 전달하기 전에 인수를 문자열로 변환해야 합니다.
원하는 만큼의 인수를 전달하는 데 사용할 수 있습니다.
subprocess.check_call("./script.ksh %s %s %s" % (arg1, str(arg2), arg3), shell=True)
사실, 당신은 단지 추가하기만 하면 됩니다.shell=True
인수:
subprocess.call("sleep.sh", shell=True)
하지만 조심하세요 -
경고 shell=True로 시스템 셸을 호출하면 신뢰할 수 없는 입력과 결합될 경우 보안 위험이 발생할 수 있습니다.자세한 내용은 자주 사용되는 인수 아래의 경고를 참조하십시오.
반드시sleep.sh
실행 권한이 있으며 이를 사용하여 실행합니다.shell=True
:
#!/usr/bin/python
import subprocess
print "start"
subprocess.call("./sleep.sh", shell=True)
print "end"
한다면chmod
작동하지 않는 경우 다음을 시도할 수도 있습니다.
import os
os.system('sh script.sh')
# you can also use bash instead of sh
python에서 bash 스크립트를 실행하는 방법을 물어보고 여기로 안내되어 답변을 추가합니다.오류가 발생했습니다.OSError: [Errno 2] file not found
매개 변수를 사용하는 경우.예를 들어 스크립트가 절전 시간 매개 변수를 사용했다고 가정해 보겠습니다.subprocess.call("sleep.sh 10")
작동하지 않습니다. 배열로 전달해야 합니다.subprocess.call(["sleep.sh", 10])
언급URL : https://stackoverflow.com/questions/13745648/running-bash-script-from-within-python
'source' 카테고리의 다른 글
표에 댓글을 달려면 어떻게 해야 하나요 - 마리아DB (0) | 2023.06.06 |
---|---|
오류 1366: 마리아에 문자열을 삽입할 때 잘못된 문자열 값DB (0) | 2023.06.06 |
NSData를 문자열로 변환하시겠습니까? (0) | 2023.06.01 |
NSTime 변환 방법간격(초)(분) (0) | 2023.06.01 |
루비에서 배열을 해시로 변환하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.01 |