명령줄 매개변수를 얻는 Python의 방법 소개: getopt 모듈 및 argparse 모듈.
python 버전: 2.7
1. getopt 모듈
은 주로 모듈의 기능을 사용합니다:
options, args = getopt.getopt(args, shortopts, longopts=[])
매개변수 인수: 일반적으로 sys.argv[1:]. 실행된 스크립트의 이름이며 명령줄 매개변수로 계산되지 않는 sys.argv[0]을 필터링합니다.
매개변수 shortopts: 짧은 형식 분석 문자열. 예를 들어, "hp:i:"는 h 뒤에 콜론이 없다는 의미입니다. 이는 매개변수가 없음을 의미합니다. 즉, p와 i 뒤에 콜론이 있다는 의미입니다.
매개변수 longopts: 긴 형식 분석 문자열 목록입니다. 예: ["help", "ip=", "port="], help 뒤에 등호가 없습니다. 이는 매개변수가 없음을 의미합니다. 이는 ip 및 port 뒤에 콜론이 있음을 의미합니다.
반환 값 옵션은 튜플을 요소로 포함하는 목록입니다. 각 튜플의 형식은 (옵션 문자열, 추가 매개변수)입니다. 예: ('-i', '192.168.0.1')
반환 값 args는 목록이며, 그 요소는 '-' 또는 '--'를 포함하지 않는 매개변수입니다.
명령줄에서 다음 명령을 실행하세요:
python test_getopt.py -i 192.168.0.1 -p 80 123 a
또는
python test_getopt.py -ip=192.168.0.1 --port=80 123 a
test_getopt.py 코드는 다음과 같습니다.
#encoding=utf-8 import getopt import sys def main(argv): try: options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError: sys.exit() for option, value in options: if option in ("-h", "--help"): print("help") if option in ("-i", "--ip"): print("ip is: {0}".format(value)) if option in ("-p", "--port"): print("port is: {0}".format(value)) print("error args: {0}".format(args)) if __name__ == '__main__': main(sys.argv[1:])
실행 결과는 다음과 같습니다.
2. argparse 모듈
은 명령줄 옵션과 매개변수를 구문 분석하는 데 사용되는 표준 모듈입니다.
사용 단계:
1: import argparse #Import 모듈
2: 파서 = argparse.ArgumentParser() #파싱 객체 생성
3: 파서 .add_argument() #객체에 사용되는 명령줄 옵션 및 매개변수 추가
4: parser.parser_args() #명령줄 구문 분석
다음 세부 사항 소개 메서드 ArgumentParser 및 add_argument:
ArgumentParser(prog=None, 사용법=None, 설명=None, epilog=None, parent=[], formatter_class=argparser.HelpFormatter, prefix_chars='-', fromfile_prefix_chars= None, Argument_default=None, conflict_handler='error', add_help=True)
매개변수에는 기본값이 있습니다. 매개변수가 잘못되어 프로그램을 실행하거나 parser.print_help() 메서드를 호출하는 경우 이러한 설명이 인쇄됩니다. . 일반적으로 매개변수 설명만 전달하면 됩니다.
add_argument(이름 또는 플래그... [, 작업] [, nargs] [, const] [, 기본값] [, 유형] [, 선택] [, 필수] [, 도움말] [, 메타변수] [, dest])
공통 매개변수는 다음과 같이 설명됩니다.
이름 또는 플래그: 명령줄 매개변수 이름 또는 옵션(예: -p, --port
action:
Store: 기본 액션 모드, 지정된 변수에 값을 저장합니다.
Store_const: 저장된 값은 매개변수의 const 부분에 지정되며 종종 부울이 아닌 구현에 사용됩니다. 명령줄 플래그
store_true/store_false: 부울 스위치. store_true의 기본값은 False입니다. 명령줄에 부울 스위치를 입력하면 값은 True입니다. store_false는 반대입니다.
Append: 값을 목록에 저장합니다. 이 매개변수는 재사용할 수 있습니다.
Append_const: 값을 목록에 저장합니다. 저장된 값은 const 부분에 지정됩니다. 매개변수
개수: 통계 입력 매개변수 약어 개수
버전: 버전 정보 출력 후 스크립트 종료
nargs: 일반적으로 명령줄 매개변수 개수 와일드카드로 표시: ? 하나만 사용됨을 의미하고, *는 0 이상, +는 1 이상을 의미합니다.
기본값: 기본값
유형: 매개변수 유형, 기본값은 문자열 유형, 부동 소수점일 수도 있습니다. int, boolean 등의 유형
선택사항: 입력값 범위
필수: 기본값은 False, True인 경우 매개변수를 입력해야 한다는 의미
help : 정보
dest를 사용하기 위한 도움말 프롬프트: 프로그램 매개변수의 해당 변수 이름(예: add_argument("-a", dest="code_name")), 스크립트에서 parser.code_name을 사용하여 명령줄 옵션 값에 액세스
샘플 스크립트 test_argparse.py 코드는 다음과 같습니다.
1 #encoding=utf-8 2 import argparse 3 4 def main(args): 5 print("--address {0}".format(args.code_address)) #args.address会报错,因为指定了dest的值 6 print("--flag {0}".format(args.flag)) #如果命令行中该参数输入的值不在choices列表中,则报错 7 print("--port {0}".format(args.port)) #prot的类型为int类型,如果命令行中没有输入该选项则报错 8 print("-l {0}".format(args.log)) #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问 9 10 if __name__ == '__main__':11 parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")12 parser.add_argument("--address", default=80, help="the port number.", dest="code_address")13 parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")14 parser.add_argument("--port", type=int, required=True, help="the port number.")15 parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")16 17 args = parser.parse_args()18 main(args)
다음 명령을 각각 실행하십시오:
python test_argparse.py
python test_argparse.py --port 80
python test_argparse.py --port 80 --flag apk
python test_argparse.py --port 80 -l
명령줄 매개변수를 얻는 더 많은 Python 방법과 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!