• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

질문드립니다.

20.06.21 16:10 작성 조회수 119

1

argparse 모듈에 대해 질문드립니다.

사용 초기에 아래 코드를 사용하시던데

parse랑 args 변수에 담은 것들이

무엇을 의미하는지 알려주실수있으신가요?

또한 nargs = "+"는 입력받은 모든값들을

문자열 리스트로 만드는 코드인가요?

parse = argparse.ArgumentParser()
parse.add_argument("-f",type=str)
parse.add_argument("-e"nargs="+")
args = parse.parse_args()

답변 1

답변을 작성해보세요.

2

parse 변수는 argparse 의 ArgumentParser() 기능을 사용하기 위핸 객체 변수 입니다. 객체변수는 쉽게 어떤 기능을 동작하기 위해 생성된 변수라 생각하시면 쉬울듯 합니다. 이렇게 생성된 parse 변수는 add_argument() 라는 함수를 사용할 수 있습니다. 이 함수는 사용자가 실행시에 넘겨준 아규먼트를 파싱하기 위해 준비를 하는 과정이라보시면 됩니다. add_arguemnt("옵션", type=자료형태) 등으로 사용할 수 있으며 이 외에도 여러가지 기능이 있습니다. 다시 말씀드리지만 이 과정은 실행시 넘겨준 아규먼트를 파싱하기 위한 준비의 단계입니다. 어떤 인자가 어떤 자료형이니 실행시 넘어오면 알아서 파싱해라 라고 알려주는 역할만 하게 됩니다.

이렇게 위에서 add_argument() 함수로 아규먼트 파싱을 위한 준비가 다 되었으면 args = parse.parse_args() 를 호출하여 실제 아규먼트를 파싱하여 그 결과를 args 에 담습니다. 그러면 실제 우리는 args.f 형태로 아규먼트를 보다 쉽게 사용할 수 있게 됩니다.

다시 쉽게 정리하면 parse.add_argument()로 사용될 아규먼트를 parse 객체에 알려주고 parse_args() 를 호출하여 실제 파싱을 동작하게 만들어 args = parse.parse_args() 같이 args 변수에 그 결과를 담아 args 를 사용하게 됩니다.

nargs 옵션은 말씀하신것 처럼 다음 아규먼트 옵션이 있기 전까지의 모든 인자를 하나의 옵션에 담는 역할을 합니다. 보다 자세한 사항은 공식 문서를 참고하시면 도움이 될듯 하여 아래 링크를 추가 합니다.

https://docs.python.org/ko/3/library/argparse.html#nargs