preloader
Python

Python argparse

Python argparse

Python을 처음 접했을때 스크립트를 작성하고 python ~~~.py 이런 식으로 실행했습니다.

필요한 인자는 스크립트 안에 세팅을 했었죠. (매우 무지했을 시절…물론 현재도 무지함…)

하지만 실제로 오픈소스를 접하다 보면 python ~~~~.py ?? ?? ??, python ~~~~.py --a --b --c와 같은 방식으로 많이 실행합니다!

이번 포스팅에선 위와 같이 스크립트를 실행할때 인자를 넘기는 법에 대해 두 가지 빠르게 예제를 적어보겠습니다!!

예제는 두개의 정수 a, b를 받아서 a^b를 하는 스크립트 입니다!

sys 모듈 사용


import sys

assert sys.argv[1].isdigit(), f"첫번째 인자('{sys.argv[1]}')가 정수가 아닙니다!"
assert sys.argv[2].isdigit(), f"두번째 인자('{sys.argv[2]}')가 정수가 아닙니다!"

a = int(sys.argv[1])
b = int(sys.argv[2])

print(f"{a}^{b} = {a**b}")

# python ~~~.py 2, 4
# 2^4 = 16
  • sys 모듈에서 sys.argv 같은 경우엔 python ~~~.py 2, 4 에서 ~~~.py 와 같이 실행하는 스크립트 이름부터 인자로 취급을 합니다.
  • 그렇기 때문에 첫번째 인자를 argv[1] 로 한 것입니다!

argparse 모듈 사용


import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--a', type=int)
parser.add_argument('--b', type=int)

args = parser.parse_args()

print(f"{args.a}^{args.b} = {args.a**args.b}")

# python ~~~.py --a 2 --b 4
# 2^4 = 16
  • argparse 는 매우 매우 많이 사용되는 방법입니다.
  • 입력 인자에 대한 변수 타입, 기본값, 설명등을 사전에 정의할 수 있어요!

P.S

  • 오늘도 간단 포스팅 끝.
support-btn
도움이 되셨다면 몰랑이에게 밀크티를...!
더 다양한 포스팅을 채우도록 노력할게요!
comments powered by Disqus