Program Tip

Python 셸에서 인수를 사용하여 파일 실행

programtip 2020. 11. 22. 20:27
반응형

Python 셸에서 인수를 사용하여 파일 실행


인수가있는 파일을 실행하기 위해 Python Shell에서 명령을 실행하고 싶습니다.

예 : execfile("abc.py")하지만 2 개의 인수를 추가하는 방법은 무엇입니까?


execfilePython 파일을 실행하지만 스크립트가 아닌로드하여 실행합니다. 인수가 아닌 변수 바인딩 만 전달할 수 있습니다.

Python 내에서 프로그램을 실행하려면 subprocess.call.

subprocess.call(['./abc.py', arg1, arg2])

이 시도:

import sys
sys.argv = ['arg1', 'arg2']
execfile('abc.py')

참고 때 abc.py마감이 컨트롤이 호출 프로그램에 반환됩니다. 참고도 그 abc.py호출 할 수 있습니다 quit()참으로 완료합니다.


사실, 우리는 이것을하고 싶지 않습니까?

import sys
sys.argv = ['abc.py','arg1', 'arg2']
execfile('abc.py')

import sys
import subprocess

subprocess.call([sys.executable, 'abc.py', 'argument1', 'argument2'])

현재 인터프리터 프로세스에 모듈을로드하고 외부에서 Python 스크립트를 호출하는 것이 혼란 스럽습니다.

전자 import는 관심있는 파일을 사용하여 수행 할 수 있습니다 . execfile 은 가져 오기와 유사하지만 파일에서 모듈을 생성하는 대신 단순히 파일을 평가합니다. 쉘 스크립트의 "소싱"과 유사합니다.

후자는 subprocess 모듈을 사용하여 수행 할 수 있습니다. 인터프리터의 다른 인스턴스를 생성하고 원하는 매개 변수를 전달합니다. 이것은 백틱을 사용하여 쉘 스크립트에서 쉘 아웃하는 것과 유사합니다.


더 흥미로운 시나리오를 위해 runpy모듈을 볼 수도 있습니다 . 파이썬 2.7부터 run_path기능이 있습니다. 예 :

import runpy
import sys

# argv[0] will be replaced by runpy
# You could also skip this if you get sys.argv populated
# via other means
sys.argv = ['', 'arg1' 'arg2']
runpy.run_path('./abc.py', run_name='__main__')

명령 줄 인수는 execfile(). subprocess대신 보세요 .


PYTHONINSPECT실행하려는 파이썬 파일에 설정 경우

[repl.py]

import os
import sys
from time import time 
os.environ['PYTHONINSPECT'] = 'True'
t=time()
argv=sys.argv[1:len(sys.argv)]

를 사용할 필요가 없으며 execfile셸에서 평소와 같이 인수를 사용하여 파일을 직접 실행할 수 있습니다.

python repl.py one two 3
>>> t
1513989378.880822
>>> argv
['one', 'two', '3']

게다가 subprocess.call, 당신은 또한 사용할 수 있습니다 subprocess.Popen. 다음과 같이

subprocess.Popen(['./script', arg1, arg2])


스크립트를 병렬로 실행하고 다른 인수를 지정하려면 아래와 같이 할 수 있습니다.

import os
os.system("python script.py arg1 arg2 & python script.py arg11 arg22")

참고 URL : https://stackoverflow.com/questions/5788891/execute-a-file-with-arguments-in-python-shell

반응형