본문 바로가기
PROGRAMMING/Python

[PYTHON] parse_args error 에러 원인 및 해결 방법

by HYUNHP 2023. 3. 2.
728x90
반응형

안녕하세요, HELLO

 

딥러닝 모델을 만들면서 argparse 라이브러리에서 ArgumentPaser 함수로 parser에 add_argument를 통해 인수를 정의할 경우, parse_args()로 저장할 때 에러가 발생할 수 있습니다.

 

오늘은 parse_args error 해결 방안과 이에 대한 원인에 대해서 확인해 보려고 합니다.


STEP 1. 'parse_args error' 해결 방법

 

STEP 2. 에러가 발생한 이유 및 해결 방안

 

 

STEP 1. 'parse_args error' 해결 방법

 

'''
SET PARAMETERS
'''

parser = argparse.ArgumentParser(description='CRAFT Text Detection')

parser.add_argument('--trained_model', default='weights/craft_mlt_25k.pth', type=str, help='pretrained model')
parser.add_argument('--text_threshold', default=0.7, type=float, help='text confidence threshold')
parser.add_argument('--low_text', default=0.4, type=float, help='text low-bound score')
parser.add_argument('--link_threshold', default=0.4, type=float, help='link confidence threshold')
parser.add_argument('--cuda', default=True, type=str2bool, help='Use cuda for inference')
parser.add_argument('--canvas_size', default=1280, type=int, help='image size for inference')
parser.add_argument('--mag_ratio', default=1.5, type=float, help='image magnification ratio')
parser.add_argument('--poly', default=False, action='store_true', help='enable polygon type')
parser.add_argument('--show_time', default=False, action='store_true', help='show processing time')
parser.add_argument('--test_folder', default='/data/', type=str, help='folder path to input images')

'''
When use parse_args() error evocked...

'''
args = parser.parse_args()

 

parser에 add_argument를 통해 인수를 정의할 경우, parse_args()로 저장할 때 아래처럼 아래가 발생할 수 있습니다. 

 

 

이때, parser.parse_unknown_args로 변경하고, args, unknown으로 반환받을 항목을 추가하면 오류가 해결됩니다.

 

'''
When use parse_args() error evocked...

'''
args, unknown = parser.parse_known_args()

 

반응형

 

STEP 2. 에러가 발생한 이유 및 해결 방안

 

parser.parse_args()를 호출할 때, argparse는 모든 명령줄 인자가 ArgumentParser 객체에 정의되어 있을 것으로 예상합니다. 인식할 수 없는 인수가 있는 경우(즉, ArgumentParser에 정의되지 않은 인수가 있는 경우) argparse는 오류를 발생시킵니다.

예를 들어 다음 코드가 있다고 가정해 보겠습니다:

import argparse

parser = argparse.ArgumentParser(description='An example program.')
parser.add_argument('filename', help='The name of the file to process.')

args = parser.parse_args()


파이썬 argparse ArgumentParser에 --verbose가 정의되지 않았기 때문에 오류가 발생합니다.

이 오류를 방지하려면 parser.parse_args() 대신 parser.parse_known_args()를 사용할 수 있습니다. parse_known_args()는 parse_args()와 동일한 방식으로 작동하지만 인식할 수 없는 인자에 대해 오류를 발생시키는 대신 구문 분석된 인자와 인식할 수 없는 인자의 목록을 포함하는 튜플을 반환합니다.

 

import argparse

parser = argparse.ArgumentParser(description='An example program.')
parser.add_argument('filename', help='The name of the file to process.')

args, unknown = parser.parse_known_args()

if unknown:
    print(f'Warning: Unrecognized arguments: {unknown}')

print(f'Processing file: {args.filename}')


이 예제에서는 parse_known_args()를 사용하여 명령줄 인수를 구문 분석합니다. 인식할 수 없는 인수가 있는 경우에는 경고 메시지를 출력합니다. 그렇지 않으면 처리할 파일 이름을 인쇄합니다.

 

이를 통해 parse_args()로 발생하는 에러를 해결할 수 있습니다.


■ 마무리

'parse_args error 에러 원인 및 해결 방법'에 대해서 알아봤습니다.

좋아요댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글