Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

명령줄 옵션용 Python 파서

<시간/>

매우 자주 명령줄에서 실행할 때 Python 스크립트에 인수를 전달해야 합니다. 그러나 필요한 매개변수가 동일한 수나 유형 또는 순서로 제공되지 않으면 스크립트에서 예외가 발생합니다. 여기에서 명령줄 인수를 적절하게 구문 분석해야 합니다.

argparse 모듈은 매우 사용하기 쉬운 명령줄 인터페이스를 작성하기 위한 도구를 제공합니다. sys.argv 목록에 수집된 인수를 구문 분석하고 도움말을 자동으로 생성하며 잘못된 옵션이 제공될 때 오류 메시지를 표시하는 방법을 처리합니다.

명령줄 인터페이스를 설계하는 첫 번째 단계는 파서 개체를 설정하는 것입니다. 이것은 ArgumentParser()에 의해 수행됩니다. argparse 모듈의 함수. 함수에 설명 매개변수로 설명 문자열을 지정할 수 있습니다.

스크립트로 시작하려면 인수 없이 명령줄에서 실행됩니다. 계속 parse_args() 사용 주어진 인수가 없기 때문에 아무것도 하지 않는 파서 객체의 메소드입니다.

수입 argparser =argparse.ArgumentParser(description="샘플 인수 파서")args=parser.parse_args()

위의 스크립트가 실행될 때

C:\python36>python argparser1.pyC:\python36>python argparser1.py --helpusage:argparser1.py [-h]샘플 인수 parser옵션 인수:-h, --help 이 도움말 메시지를 표시하고 종료 

두 번째 명령줄 사용법은 표시된 대로 도움말 메시지를 생성하는 –help 옵션을 제공합니다. –help 매개변수는 기본적으로 사용 가능합니다.

이제 스크립트를 실행하는 데 필수적인 인수를 정의하고 스크립트가 제공되지 않으면 오류가 발생해야 합니다. 여기에서 add_argument()에 의해 'user' 인수를 정의합니다. 방법.

import argparseparser=argparse.ArgumentParser(description="샘플 인수 파서")parser.add_argument("user")args =parser.parse_args()if args.user=="Admin":print("Hello Admin") else:print("손님 안녕하세요")

이 스크립트의 도움말은 이제 '사용자' 형식으로 하나의 위치 인수를 보여줍니다. 프로그램은 그 값이 'Admin'인지 확인하고 해당 메시지를 출력합니다.

C:\python36>python argparser1.py --helpusage:argparser1.py [-h] usersample 인수 parserpositional arguments:useroptional arguments:-h, --help 이 도움말 메시지를 표시하고 C:\python36>python argparser1을 종료합니다. py AdminHello AdminC:\python36>python argparser1.py tempHello 게스트

기본값을 할당할 수 있습니다. add_argument() 메소드의 인수에 값.

임포트 argparseparser=argparse.ArgumentParser(description="샘플 인수 파서")parser.add_argument("user", nargs='?',default="Admin")args=parser.parse_args()if args.user=="Admin":print("Hello Admin")else:print("손님 안녕하세요")

여기 나르그 사용해야 하는 명령줄 인수의 수입니다. '?'. 가능한 경우 하나의 인수가 명령줄에서 사용되어 단일 항목으로 생성됩니다. 명령줄 인수가 없으면 기본 값이 생성됩니다.

C:\python36>python argparser1.pyHello AdminC:\python36>python argparser1.py AdminHello AdminC:\python36>python argparser1.py testHello 게스트

기본적으로 모든 인수는 문자열로 처리됩니다. 유형을 명시적으로 언급하려면 인수의 경우 add_argument() 메소드에서 유형 매개변수를 사용하십시오. 모든 Python 데이터 유형은 유형의 유효한 값입니다.

import argparseparser=argparse.ArgumentParser(description="숫자 추가")parser.add_argument("첫 번째", type=int)parser.add_argument("second", type=int)args =parser.parse_args()x =args.firsty =args.secondz =x+yprint ('{} 및 {}의 덧셈 ={}'.format(x,y,z))C:\python36>python argparser2.py 2 3 2와 3의 덧셈 =5

위의 예에서 인수는 필수입니다. 선택적 인수를 추가하려면 이름 앞에 이중 대시 --를 붙입니다. 다음의 경우 surname 인수는 접두사가 이중 대시(--surname)이므로 선택 사항입니다.

import argparserparser =argparse.ArgumentParser()parser.add_argument("이름")parser.add_argument("--surname")args =parser.parse_args()print("내 이름은 ", args.name, end=' ')인 경우 args.surname:print(args.surname)

단일 대시로 시작하는 인수의 한 글자 이름은 짧은 이름 옵션으로 사용됩니다.

C:\python36>python argparser3.py Malhar내 이름은 MalharC:\python36>python argparser3.py Malhar --surname Lathkar내 이름은 Malhar Lathkarparser.add_argument("-s","--surname")

인수가 정의된 목록에서만 값을 지정해야 하는 경우 선택 매개변수로 정의됩니다.

import argparseparser =argparse.ArgumentParser()parser.add_argument("sub", choice=['Physics', 'Maths', 'Biology'])args=parser.parse_args()print("내 주제는 ", args.sub)

매개변수의 값이 목록에 없으면 잘못된 선택 오류가 표시됩니다.

C:\python36>python argparser4.py Physics내 주제는 PhysicsC:\python36>python argparser4.py 사용법:argparser4.py [-h] {Physics,Maths,Biology}argparser4.py:error:argument sub:invalid 선택:'영어'('물리학', '수학', '생물학' 중에서 선택)