[파이썬] argparse와 optparse 비교

Python에서 명령줄 인자를 처리하기 위해 argparseoptparse 두 가지 옵션을 사용할 수 있습니다. 이 두 모듈은 명령줄 인자를 가져와 파싱하고 사용하기 쉬운 방식으로 파이썬 스크립트에 전달하는 기능을 제공합니다. 그러나 argparse는 optparse보다 더 선호되는 옵션입니다. 이번 글에서는 argparse와 optparse를 비교해보도록 하겠습니다.

argparse

argparse는 Python 2.7 버전 이후로 표준 라이브러리로 채택되었습니다. argparse는 처리해야 할 인자와 그 옵션을 정의하고 사용자가 인자를 제공할 때 이를 파싱하여 관련된 동작을 수행하는 기능을 제공합니다.

다음은 argparse를 사용한 간단한 예제 코드입니다.

import argparse

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

# 인자 추가
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')

parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

# 인자 파싱
args = parser.parse_args()

# 파싱한 인자 사용
print(args.accumulate(args.integers))

argparse를 사용하면 인자를 정의하고 유효성을 검사하는 데 간단하고 직관적인 방법을 제공합니다. 또한 인자에 대한 도움말과 기본값을 설정할 수도 있습니다.

optparse

optparse는 argparse 이전에 사용되었던 옵션입니다. argparse와 optparse는 유사한 기능을 제공하지만 optparse는 더 구식이고 제한된 기능을 제공합니다. optparse의 사용은 더 이상 권장되지 않고, Python 3 이상의 버전에서는 사용할 수 없습니다.

다음은 optparse를 사용한 예제 코드입니다.

import optparse

# optparser 객체 생성
parser = optparse.OptionParser()

# 인자 추가
parser.add_option('--verbose', action="store_true", dest="verbose", default=False, help="print verbose output")

# 인자 파싱
(options, args) = parser.parse_args()

# 파싱한 인자 사용
if options.verbose:
    print("Verbose output enabled")

optparse는 argparse보다 기능이 제한적이며 사용하기가 더 복잡합니다. 또한 명시적인 도움말과 기본값 설정을 제공하지 않습니다.

argparse vs optparse

argparse는 옵션이 더 많고, 더 직관적인 인터페이스를 제공하기 때문에 optparse보다 더 선호되는 옵션입니다. 또한 argparse는 코드 유지 관리와 확장성면에서 더 우수한 선택입니다.

그러나 아직 optparse를 사용하고 있는 코드가 있거나 Python 2를 사용해야 하는 경우 optparse를 사용해야 할 수도 있습니다. 전환을 고려한다면 이전 코드를 argparse로 마이그레이션하는 것을 고려해 보는 것이 좋습니다.

이상으로 argparse와 optparse를 비교하는 글을 마치겠습니다. argparse를 사용하면 명령줄 인자를 쉽게 파싱하고 사용할 수 있어, Python 스크립트의 활용도를 높일 수 있습니다.