Python에서 명령줄 인자를 처리하기 위해 argparse와 optparse 두 가지 옵션을 사용할 수 있습니다. 이 두 모듈은 명령줄 인자를 가져와 파싱하고 사용하기 쉬운 방식으로 파이썬 스크립트에 전달하는 기능을 제공합니다. 그러나 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 스크립트의 활용도를 높일 수 있습니다.