무효 클릭 IP 추적 중...
파이썬/파이썬 중급

[파이썬] 코드에서 커맨드 명령어를 실행 시키는 방법(with subprocess) 2편

꼬예 2023. 2. 8.
[파이썬] 코드에서 커맨드 명령어를 실행 시키는 방법(with subprocess) 2편

(이 포스팅은 1편을 읽고 왔다는 전제로 작성 되었습니다.)

 

2편에서는 output값을 받는 방법과 인자를 넘겨주는 방법에 대해 알아보겠다.

 

기본 파일 세팅

#script.py
print('hello')

 

 

  subprocess  를 이용하여   script.py   파일을 실행시켜 보자.

#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을 전달받기 위해서   capture_output=True  설정을 해줘야 한다.

이때 output은   CompletedProcess   클래스다.

 

#subprocess_tutor.py

import subprocess

output = subprocess.run(["python", "script.py"], capture_output=True)
print(output.stdout.decode())
#output
'''
hello
'''

원하는 값을 뽑아내기 위해서   .stdout   프러퍼티로 해당 값에 접근 후   .decode  를 통해 byte값을 string으로 변환해야 한다.

 

인자 전달하는 법

전달하는 법은 간단하다.

  script.py   뒤에 값을 하나 더 넣어주면 된다.

#subprocess_tutor.py

import subprocess

subprocess.run(["python", "script.py", "인자 전달"])

그렇다면   script.py  에서 넘겨준 인자값을 어떻게 받을 수 있을까?

 

두가지 방식이 있다.

1)   sys   이용

#script.py

import sys

print(sys.argv)
# output
'''
['script.py', '인자 전달']
'''

  sys.argv   값을 출력해보면 리스트 값이 들어있다.

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)   argparse   이용

(  argparse  가 낯선분은 포스팅 참조)

 

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

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글

꼬예님의
글이 좋았다면 응원을 보내주세요!