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

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

꼬예 2023. 2. 8.

(이 포스팅은 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
'''

 

 

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

댓글