python 은 argparse 를 이용 하여 명령 행 인 자 를 분석 하 는 방법

명령 행 매개 변수 도 구 는 우리 가 매우 자주 사용 하 는 도구 입 니 다.예 를 들 어 우리 가 실험 을 할 때 매개 변 수 를 하 드 인 코딩 을 통 해 코드 에 쓰 면 우 리 는 매개 변 수 를 수정 할 때마다 해당 하 는 코드 와 논 리 를 수정 해 야 합 니 다.이것 은 분명 불편 합 니 다.비교적 좋 은 방법 은 필요 한 매개 변 수 를 명령 행 을 통 해 들 어 오 는 형식 으로 설정 하 는 것 이다.그러면 우 리 는 실행 할 때 매개 변 수 를 수정 하면 된다.
sys.argv
명령 행 에 들 어 오 는 인 자 를 분석 하 는 가장 쉬 운 방법 은 sys.argv,sys.argv 를 통 해 명령 행 을 통 해 들 어 오 는 인 자 를 얻 을 수 있 습 니 다.

import sys

print(sys.argv)
사용법 은 간단 합 니 다.sys.argv 만 호출 하면 됩 니 다.argv 는 하나의 배열 입 니 다.매개 변수 가 여러 개 있 으 면 아래 표 시 를 통 해 접근 할 수 있 습 니 다.그러나 주의해 야 할 것 은 argv 에 저 장 된 결 과 는 Python 호출 에서 시 작 된 것 입 니 다.
우 리 는 하나의 예 를 살 펴 보 겠 습 니 다.우 리 는 마음대로 매개 변 수 를 입력 합 니 다.print sys.argv 이후 에는 이 렇 습 니 다.

python test.py -a -c -d=222 
>>> ['test.py', '-a', '-c', '-d=222']
즉,python 에서 test.py 라 는 파일 이름 을 실행 하 는 것 도 매개 변수 중 하나 이기 때문에 사용자 정의 인 자 를 얻 으 려 면 argv[1]부터 시작 해 야 합 니 다.
sys.argv 의 장점 은 편리 하 다 는 것 이다.우 리 는 그것 을 방문 하면 들 어 오 는 인 자 를 얻 을 수 있다.하지만 단점 도 뚜렷 하 다.기능 이 너무 적다.만약 에 우리 가 다른 큰 신의 코드 를 본다 면 우 리 는 운행 할 때 어떤 매개 변 수 를 전달 해 야 하 는 지,그리고 모든 매개 변수 가 어떤 의 미 를 대표 하 는 지 알 고 싶 으 면 할 수 없다.
이 문 제 를 해결 하기 위해 서 는 더 많은 기능 을 봉인 하 는 도 구 를 사용 해 야 하 며,이 글 의 핵심 인 argparse 도 사용 해 야 한다.
기본 용법
argparse 는 Python 의 라 이브 러 리 입 니 다.우 리 는 먼저 import 를 해 야 합 니 다.이 라 이브 러 리 는 Python 이 가지 고 있 는 것 이 고 설치 할 필요 도 없습니다.우 리 는 직접 사용 할 수 있 습 니 다.
우리 가 사용 하기 전에 이 parse,즉 매개 변수 해석 기 를 초기 화 해 야 합 니 다.

#   ArgumentParser         ,    
parser = argparse.ArgumentParser()
parser.parse_args()
이 럴 때 는 이미 해상도 기 가 있 습 니 다.우 리 는 실행 할 때 인자-h 를 입력 하여 help 를 표시 할 수 있 습 니 다.즉,현재 해상도 기 에서 정 의 된 인 자 를 보 는 것 입 니 다.우 리 는 지금 아무것도 없 기 때문에 표시 할 수 있 는 것 은 help 뿐이다.

필수 매개 변수
먼저,우 리 는 필수 매개 변 수 를 소개 합 니 다.그 정 의 는 함수 중의 필수 매개 변수 와 같 습 니 다.즉,우리 가 프로그램 을 실행 하 는 데 필요 한 매개 변 수 를 말 합 니 다.전송 하지 않 으 면 프로그램 이 실행 되 지 말 아야 합 니 다.
필수 매개 변 수 를 정의 하 는 방법 은 매우 간단 합 니 다.우 리 는 add 를 통 해서 만argument 에서 인자 의 이름 을 입력 하면 됩 니 다.

import argparse

parser = argparse.ArgumentParser("For test the parser")
parser.add_argument('test')
args = parser.parse_args()

print(args.test)
이렇게 해서 우 리 는 test 라 는 인 자 를 정 의 했 습 니 다.우 리 는 args.test 를 통 해 그것 을 방문 할 수 있 습 니 다.
이때 python test.py-h 를 다시 실행 하면 알림 메시지 에 한 줄 이 더 있 음 을 발견 할 수 있 습 니 다.

필수 매개 변수 중 test 가 있 으 며,필수 매개 변 수 는 직접 입력 되 며,접 두 사 를 붙 일 필요 가 없습니다.그 러 니까 우리 가 수행 할 때 python test.py xxx 를 직접 하면 돼.
선택 가능 한 매개 변수
필수 매개 변 수 는 당연히 선택 할 수 있 는 매개 변수 가 있 습 니 다.선택 할 수 있 는 매개 변 수 는 선택 할 수 있 고 선택 하지 않 을 수 있 기 때문에 우 리 는 사용 할 때 매개 변수 앞 에 표 지 를 추가 해 야 합 니 다-또는-.예 를 들 어 우리 의 매개 변 수 는 test 라 고 하 는데-test 또는-test 로 정의 할 수 있 습 니 다.이 두 가지 모두 가능 하고 이 두 가지 모두 정의 할 수 있 습 니 다.

parser.add_argument('-test', '--test')
우 리 는-h 를 실행 하면 optional arguments 에 test 와--test 가 더 많은 것 을 발견 할 수 있 습 니 다.

그러나 이것 은 print 에서 매개 변수 이름 만 나 왔 을 뿐 이 매개 변수 가 무엇 을 하 는 지 알려 주지 않 았 습 니 다.help 매개 변수 뒤에 show this help message and exit 라 는 제시 어 를 따 랐 습 니 다.만약 우리 도 help 가 우리 의 매개 변수의 작용 을 제시 할 수 있 기 를 바란다 면 어떻게 합 니까?
우 리 는 help 파 라 메 터 를 통 해 우리 가 인쇄 하고 자 하 는 제시 어 를 전달 하여 사용자 가 사용 할 때 파 라 메 터 를 이해 하 는 데 편리 하도록 할 수 있 습 니 다.
예 를 들 어 우 리 는 이 줄 의 문 구 를 다음 과 같이 바 꾸 었 다.

parser.add_argument('-test', '--test', help='just for help')
이렇게 하면 우리 가 운행 할 때 제시 어 를 볼 수 있다.

기본 값
만약 에 매개 변수 가 많 을 때 우 리 는 모든 값 을 지정 하 는 것 을 원 하지 않 고 채 우지 않 을 때 기본 값 이 있 기 를 바 랄 수도 있 습 니 다.이 생각 은 매우 정상 적 입 니 다.이 점 을 하려 면 간단 합 니 다.우 리 는 default 매개 변 수 를 통 해 지정 할 수 있 습 니 다.

import argparse

parser = argparse.ArgumentParser("For test the parser")
parser.add_argument('-test', '--test', default=1, help='just for help')
args = parser.parse_args()

print(args.test)
예 를 들 어 코드 에서 test 매개 변수의 기본 값 을 1 로 설정 합 니 다.우리 가 실행 할 때 test 라 는 매개 변 수 를 입력 하지 않 으 면 프로그램 은 기본 값 인 1 을 사용 합 니 다.
그러나 기본 값 의 정 보 는 help 에 print 되 지 않 기 때문에 사용자 에 게 기본 값 이 얼마 인지 스스로 알려 야 합 니 다.
type
우 리 는 매개 변수의 기본 값 을 정의 할 수 있 으 며,물론 그것 의 유형 도 정의 할 수 있다.
명령 행 에 들 어 오 는 매개 변 수 는 기본적으로 문자열 이기 때문에 수학 적 계산 을 하려 면 str 를 사용 하려 면 스스로 변환 해 야 하기 때문에 매우 불편 합 니 다.우 리 는 파 라 메 터 를 입력 할 때 유형 매 칭 을 완성 할 수 있 습 니 다.그러면 파 라 메 터 를 입력 하 는 유형 이 틀 리 면 바로 오 류 를 보고 하고 아래로 실행 하지 않 습 니 다.
이 정 도 는 간단 합 니 다.type 매개 변 수 를 통 해 이 루어 집 니 다.

parser.add_argument('-test', '--test', default=1, type=int, help='just for help')
예 를 들 어 우리 가 int 형의 인 자 를 정 의 했 는데 유형 이 일치 하지 않 으 면 오류 가 발생 할 수 있 습 니 다.

오류 메시지 에 명확 하 게 쓰 여 있 습 니 다.우 리 는 잘못된 int 의 값 을 얻 었 습 니 다.그것 은 abc 입 니 다.
선택 값
이것 역시 선택 가능 한 값 을 지원 합 니 다.선택 가능 한 값 은 이해 하기 쉽 습 니 다.바로 우리 가 입력 한 매개 변수의 범 위 를 몇 개의 값 에 만 한정 하 기 를 바 랍 니 다.예 를 들 어 우리 가 원 하 는 값 이 0 이 아니면 1 이거 나 특정한 몇 개의 구체 적 인 값 중에서 이 럴 때 우 리 는 choices 매개 변 수 를 통 해 이 점 을 실현 할 수 있다.
choices 매개 변 수 는 list 입 니 다.즉,우리 의 한 정 된 범위 입 니 다.이 범위 에서 만 값 이 허 용 됩 니 다.

parser.add_argument('-test', '--test', default=1, choices=[2, 3, 4], type=int, help='just for help')
테스트=1 을 실행 하면 오류 가 발생 합 니 다.들 어 오 는 값 이 choices 범위 에 있 지 않 음 을 알려 줍 니 다.

이것 은 매우 재 미 있 는 예 입 니 다.자세히 보면 우리 의 기본 값 이 1 로 설정 되 어 있 지만 선택 할 수 있 는 값 에는 1 이 없습니다.이것 도 허용 합 니 다.기본 값 은 선택 가능 한 범위 에 있 지 않 을 수 있 지만,우리 가 1 을 입력 하면 선택 가능 한 값 검사 가 실 행 됩 니 다.
action
action 은 신기 하고 유용 한 조작 으로 매개 변 수 를 지정 할 수 있 는 처리 방식 입 니 다.우리 의 기본 적 인 방식 은 store,즉 저장 이라는 뜻 입 니 다.이것 은 우리 가 모두 이해 할 수 있 습 니 다.이외에 도 storetrue,그것 은 나타 나 면 true 이 고,그렇지 않 으 면 false 임 을 나타 낸다.

parser.add_argument('-test', '--test', action='store_true', help='just for help')
우리 가 test 매개 변수의 정 의 를 이렇게 바 꾼 후에 우 리 는 운행 결 과 를 비교 해 보면 알 수 있다.

store 제외true 외 에 storeconst,즉 나타 나 면 고정 값 으로 지정 합 니 다.

parser.add_argument('-test', '--test', action='store_const', const=23, help='just for help')
이렇게 하면 우리 가-test 인 자 를 지정 하면 자동 으로 23 으로 대 입 됩 니 다.
이 두 개 를 제외 하고 다른 자주 사용 하 는 매개 변 수 는 append 로 여러 번 나타 난 같은 매개 변 수 를 하나의 list 에 자동 으로 저장 할 수 있 습 니 다.

parser.add_argument('-test', '--test', action='append', type=int, help='just for help')

nargs
nargs 도 매우 유용 한 매개 변수 로 매개 변 수 를 꽃 으로 조작 할 수 있 습 니 다.nargs 의 전송 매개 변 수 는 다음 과 같은 몇 가지 가 있 습 니 다.먼저 N,즉 하나의 정수 입 니 다.대표 적 으로 N 개의 매개 변수 값 을 받 을 수 있 습 니 다.이 N 개의 값 은 list 에 저 장 됩 니 다.

parser.add_argument('-test', '--test', nargs=2, type=int, help='just for help')
다른 전 송 된 매개 변 수 는'+'또는'*'입 니 다.임의의 여러 값 을 하나의 list 에 저장 할 수 있 습 니 다.

parser.add_argument('-test', '--test', nargs='*', type=int, help='just for help')

총결산
parser 가 있 으 면 우 리 는 Python 에서 명령 행 인 자 를 처리 하 는 것 이 매우 간단 해 지고 우 리 는 다양한 맞 춤 형 작업 을 할 수 있 습 니 다.우리 가 위 에서 소개 한 것 을 제외 하고 다른 방법 도 있 습 니 다.상대 적 으로 자주 사용 되 지 않 기 때문에 일일이 다 하지 않 고 관심 이 있 는 학생 들 은 스스로 알 아 볼 수 있 습 니 다.
이상 은 python 이 argparse 를 이용 하여 명령 행 인 자 를 분석 하 는 방법 에 대한 상세 한 내용 입 니 다.python 해석 명령 행 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기