(이 포스팅은 1편을 읽고 왔다는 전제로 작성 되었습니다.)
2편에서는 output값을 받는 방법과 인자를 넘겨주는 방법에 대해 알아보겠다.
기본 파일 세팅
#script.py
print('hello')
[ic]subprocess[/ic]를 이용하여 [ic]script.py[/ic] 파일을 실행시켜 보자.
#subprocess_tutor.py
subprocess.run(["python", "script.py"]
#output
'''
hello
'''
output 전달받는 방법
#subprocess_tutor.py
output = subprocess.run(["python", "script.py"], capture_output=True)
print(output)
#output
'''
CompletedProcess(args=['python', 'script.py'], returncode=0, stdout=b'hello\r\n', stderr=b'')
'''
output을 전달받기 위해서 [ic]capture_output=True[/ic]설정을 해줘야 한다.
이때 output은 [ic]CompletedProcess[/ic] 클래스다.
#subprocess_tutor.py
import subprocess
output = subprocess.run(["python", "script.py"], capture_output=True)
print(output.stdout.decode())
#output
'''
hello
'''
원하는 값을 뽑아내기 위해서 [ic].stdout[/ic] 프러퍼티로 해당 값에 접근 후 [ic].decode[/ic]를 통해 byte값을 string으로 변환해야 한다.
인자 전달하는 법
전달하는 법은 간단하다.
[ic]script.py[/ic] 뒤에 값을 하나 더 넣어주면 된다.
#subprocess_tutor.py
import subprocess
subprocess.run(["python", "script.py", "인자 전달"])
그렇다면 [ic]script.py[/ic]에서 넘겨준 인자값을 어떻게 받을 수 있을까?
두가지 방식이 있다.
1) [ic]sys[/ic] 이용
#script.py
import sys
print(sys.argv)
# output
'''
['script.py', '인자 전달']
'''
[ic]sys.argv[/ic] 값을 출력해보면 리스트 값이 들어있다.
0번째 인덱스 값은 파일명이고 1번째부터 인자로 들어오는 값이다.
#subprocess_tutor.py
import subprocess
subprocess.run(["python", "script.py", "인자 전달", "인자 전달2"])
만약 인자 2개를 전달한다면
아래와 같은 형태로 값을 전달 받는다.
#script.py
import sys
print(sys.argv)
# output
['script.py', '인자 전달', '인자 전달2']
2) [ic]argparse[/ic] 이용
([ic]argparse[/ic]가 낯선분은 포스팅 참조)
#subprocess_tutor.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("arg1")
parser.add_argument("arg2")
args = parser.parse_args()
print(args.arg1)
print(args.arg2)
#output
'''
인자 전달
인자 전달2
'''
'파이썬 > 파이썬 중급' 카테고리의 다른 글
[python]multiprocessing Process 완벽 정리(초보자) (0) | 2023.01.26 |
---|---|
함수에있는 **kwargs는 뭘까? (0) | 2023.01.16 |
[파이썬] argparse 란? | 사용법 (0) | 2022.08.29 |
[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 (1) | 2022.04.19 |
[파이썬 중급] getattr | setattr | delattr 은 무엇일까? (0) | 2021.10.14 |
댓글