[Python 모듈] argparse : 명령행 인자를 지원하 모듈

0. 명령행 인자란?

 

명령행 인자(Command Line Argument)란 프로그램이 실행될 때 프로그램에게 전달되는 인자값을 말합니다. 이러한 인자값은 프로그램을 실행할 때, 커맨드 라인(터미널)에서 프로그램 이름 뒤에 입력되며, 다음과 같은 형태를 가집니다. 여기서 "--option1", "--option2"는 인자값의 이름(옵션 이름)을 나타내며, "value1", "value2"는 실제로 전달되는 인자값입니다. 

 

program.py --option1 value1 --option2 value2 ...

 

명령행 인자를 활용하기 위해서는 argparse 또는 sys 모듈과 같은 라이브러리를 사용하여 프로그램에서 이러한 인자값을 쉽게 처리할 수 있습니다. 

 


1. argparse모듈이란?

 

argparse 모듈은 Python 프로그램에 명령행 인자(command-line arguments)를 지원하도록 해주는 모듈입니다.  argparse 모듈은 이러한 명령행 인자를 파싱(parse)하고, 관리하는데 매우 편리한 기능을 제공합니다. 이 모듈을 사용하면, 프로그램의 사용법(usage)을 지정하고, 인자값의 유효성을 검사하고, 인자값의 기본값을 설정하고, 인자값의 타입(type)을 지정하는 등의 작업을 쉽게 처리할 수 있습니다.

 

argparse 모듈은 별도의 설치 과정이 필요없습니다. 모듈을 사용하려면 아래와 같이 import를 하면 됩니다.

import argparse

 


2. argparse.ArgumentParser 

 

argparse.ArgumentParser() 함수는 명령행 인자를 처리하기 위한 ArgumentParser 객체를 생성하고, 인자값에 대한 정의를 추가하고, 사용자 정의 help 메시지 등을 설정할 수 있습니다.

 

아래 코드에서는 ArgumentParser() 함수를 사용하여 ArgumentParser 객체를 생성했습니다.

import argparse

# ArgumentParser 객체 생성
parser = argparse.ArgumentParser(description='Process some integers.')

 


3. ArgumentParser.add_argument()

 

argparse.ArgumentParser() 객체를 생성한 후, add_argument() 메소드를 사용하여 인자값에 대한 정의를 추가할 수 있습니다. add_argument() 메소드는 인자값에 대한 다양한 속성을 설정할 수 있으며, 이를 통해 인자값의 타입, 갯수, help 메시지 등을 지정할 수 있습니다.



일반적인 add_argument() 메소드의 사용법은 다음과 같습니다. 여기서 dest는 인자값을 저장할 변수명을 지정하는 속성입니다. 추가로 설정할 수 있는 속성으로는 다음과 같은 것들이 있습니다.

 

  • metavar : 사용자가 인자값을 입력할 때 표시할 이름입니다.
  • type : 인자값의 타입을 지정합니다.
  • nargs : 인자값의 갯수를 지정합니다. 다수의 인자값을 처리할 수 있도록 합니다.
  • const : 일부 action에서 사용되는 추가 값입니다.
  • default : 인자값이 지정되지 않았을 때 사용될 기본값입니다.
  • choices : 인자값으로 사용할 수 있는 선택지입니다.
  • required : 인자값이 반드시 지정되어야 하는지 여부를 지정합니다.
  • help : 인자값에 대한 도움말 메시지입니다.

 

parser.add_argument(dest, ..., name=value, ...)

 

 

코드에서는 add_argument() 메소드를 사용하여 "--input", "--output", "--count" 인자값에 대한 정의를 추가합니다. 

parser.add_argument('--input', dest='input_filename', metavar='FILENAME', type=str,
                    help='Input file name')
parser.add_argument('--output', dest='output_filename', metavar='FILENAME', type=str,
                    help='Output file name')
parser.add_argument('--count', dest='count', metavar='N', type=int, default=1,
                    help='Number of times to process the input file')

 


4. ArgumentParser.parse_args()

 

parse_args() 메소드는 입력된 인자값을 해석하여 ArgumentParser() 객체에 설정한 대로 인자값을 처리합니다. parse_args() 메소드를 사용하면 인자값을 파싱한 후, 각 인자값에 대응하는 변수에 값을 할당할 수 있습니다. 이를 통해 프로그램에서 인자값을 활용할 수 있습니다. 



일반적인 parse_args() 메소드의 사용법은 다음과 같습니다. 여기서 args는 파싱할 인자값의 리스트이며, namespace는 반환되는 Namespace 객체의 속성을 설정하는 데 사용됩니다. 기본값으로는 None이 지정됩니다.

args = parser.parse_args(args=None, namespace=None)

 

코드에서는 parse_args() 메소드를 사용하여 "--input", "--output", "--count" 인자값을 파싱한 후, 각각 input_filename, output_filename, count 변수에 값을 할당합니다. 

args = parser.parse_args()

input_filename = args.input_filename
output_filename = args.output_filename
count = args.count