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

[파이썬] argparse 란? | 사용법

꼬예 2022. 8. 29.

 

 

이번 포스팅에서는 argparse의 역할과 사용법에 대해 알아보겠습니다.

 

argparseargument parser의 줄임말로 인자와 관련된 기능을 제공 하는데요.

 

결론부터 말하자면  Command Line에서 직접 인자값을 넣어줄때 사용하는 모듈입니다.

 

아직 무슨 말인지 모르시겠죠?

 

아래 예시들을 차근차근 함께 보시죠.

 

1) argparse의 필요성

//test3.py

add함수

 

위와 같은 더하기 연산 함수가 있습니다.

 

이 함수를 실행시키기 위해선 임의의 인자값을 함수안에 넣어줘야 하는데요.

 

//test3.py

 

 

그리고 실행할때는 Command Line에 아래와같은 방식으로 명령어를 입력해야하죠.

 

 

불편함을 느끼셨는지 모르겠지만, 코드단에서 인자를 수정하고, Command Line에서 명령어를 입력하는 작업을 합니다.  

커맨드를 입력할때 동시에 인자값을 바꿀 수있다면 훨씬 효율적이지 않을까요?

바로 이때 argparse를 사용하는것입니다.

 

2) argparse 사용법

 

(1) import argparse

argparse를 사용하기 위해 해당 모듈을 import 해줍니다.

 

argparse import

 

(2) parser 객체 생성

 

 

ArgumentParser()메소드를통해 parser객체를 생성해줍니다.

 

(3) 사용할 인자 추가

 

인자 추가

 

앞서 생성한 parser객체에 .add_argument메소드를 통해 사용할 인자를 추가해줍니다.

 

더하기 연산에 필요한 파라미터가 2개(a,b)니까  add_argument함수를 두번 쓰면 되는데요.

 

add_argument함수 인자로는 사용할 명칭을 넣어주면 됩니다. 

 

그런데 불편하게도 --가 붙어 있는 형태로 값을 넣어주네요.

 

만약 --를 빼고 사용하려면  아래와 같이 사용을 해야하는데 

 

 

어느 부분이 매개변수 명이고, 어느부분이 인자로 넣은 값인지 헷갈립니다.

 

그렇기 때문에 --를 통해 구분해 주는거죠.

 

 

3) parse_args() 

 

parse_args()

 

parse_args()함수는 앞서 정의한 정보들을 최종적으로 저장하는 코드라고 보시면 됩니다.

 

args값

 

parse_args()를 통해 정보가 어떤형태로 값이 저장되어있는지 확인해보시죠.

우선 우리가 정의한 매개변수명(여기서는 --a, --b)을 이용해 Command Line에 명령어를 입력해보겠습니다.

 

명령어 입력

 

output:

 

output

 

Namespace라는 클래스 객체 안에 값이 들어가 있는 형태입니다.

 

각각의 인자값을 뽑아 내기 위해선 아래와 같은 방법을 이용하시면 됩니다.

 

 

output:

 

 

지금 까지 배운 내용을 앞서 작성한 add함수에 적용해볼까요?

 

4) add 함수 적용

args에 있는 값을 전달받기 위해 함수를 아래와같이 수정해줍니다.

 

 

cli 명령:

 

 

output:

 

 

그런데 2 +3 = 5가 아닌 23이 출력된걸 알 수 있습니다.

 

이는 내부적으로 값이 들어가면서 string으로 바뀌어 버렸기 때문입니다.

 

이를 수정해주기 위해선 강제적으로 형변환을 해도 되나 코드가 지저분해지는 경향이 있습니다.

 

타입 강제변환

 

대신 add_argument메소드 인자로 타입을 지정하는 방법을 사용하겠습니다.

 

타입지정

 

이번에는 우리가 원하는 형태로 값이 출력되는걸 알 수 있습니다.

 

 

지금 까지 기본 사용법을 익혔으니 추가적인 기능들에 대해 배워 보도록 하겠습니다.

 

+ 보너스

 

1) 인자가 길 경우

 

인자가길경우

 

위와 같이 인자가 길경우 cli에서 직접 입력하기 귀찮은 경우가 발생합니다.

 

 

이런 문제를 해결하기위해 add_argument에서는 short 기능을 제공하고 있습니다.

 

이 친구는 -- 가아닌 - 를 사용하여 작성하면 되는데요,  add_argument 두번째 매개변수 자리에 넣어줍니다.

 

 

cli에서 -hw 를실행을 해보면 --helloworld 와 같은 결과가 나오는걸 알 수 있습니다.

 

2) 인자가 없을 경우

add_argument를 통해 인자를 세팅 해놓았는데, 정작 cli명령어에 인자를 입력하지 않는다면 어떻게 될까요?

 

인자없음

 

그냥 None값을 반환하게 됩니다.

 

입력을 강제하기 위해선 어떻게 할까요?

 

입력강제

 

required인자를 True로 설정해주면 됩니다.

 

다시 cli명령어를 입력해보면 기존과 다르게 오류가 발생하는걸 볼 수 있습니다.

 

 

3) 도움말 입력

뿐만 아니라 argparse에서는 해당 코드를 처음보는 사람들을 위해 문구를 넣는 기능도 제공하는데요.

 

help 인자

 

help인자에 원하는 설명을 넣으시면 됩니다.

 

사용방법은 실행시 -h를 추가해주시면 됩니다.

 

-h추가

 

 

 

 

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

댓글