>  기사  >  백엔드 개발  >  Python에서 명령줄 매개변수를 얻는 방법

Python에서 명령줄 매개변수를 얻는 방법

迷茫
迷茫원래의
2017-03-25 17:11:531329검색

명령줄 매개변수를 얻는 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:])

실행 결과는 다음과 같습니다.

Python에서 명령줄 매개변수를 얻는 방법

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, 인수_기본= 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 코드는 다음과 같습니다.

#encoding=utf-8
import argparse

def main(args):
    print("--address {0}".format(args.code_address))    #args.address会报错,因为指定了dest的值
    print("--flag {0}".format(args.flag))   #如果命令行中该参数输入的值不在choices列表中,则报错
    print("--port {0}".format(args.port))   #prot的类型为int类型,如果命令行中没有输入该选项则报错
    print("-l {0}".format(args.log))  #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问

if __name__ == '__main__':
    parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")
    parser.add_argument("--address", default=80, help="the port number.", dest="code_address")
    parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")
    parser.add_argument("--port", type=int, required=True, help="the port number.")
    parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")

    args = parser.parse_args()
    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.