Python 命令行参数

[TOC]

入门版:sys

  • 编辑:vim test1.py

    1
    2
    3
    import sys
    print(len(sys.argv))
    print(str(sys.argv))
  • 运行:python test1.py 12 34 abc

    1
    2
    4
    ['test1.py', '12', '34', 'abc']
  • 注:sys.argv[0]是PY文件名

进阶版:argparse

  • 文档:https://docs.python.org/zh-cn/3/library/argparse.html
  • 编辑:vim test2.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import argparse

    parser = argparse.ArgumentParser(
    description='帮助描述信息',
    prog='程序显示名称',
    usage='顶部显示信息,会覆盖prog',
    epilog='底部显示信息') ## 括号里可什么都不写,直接默认

    parser.add_argument(
    '-bs', # 简称
    '--batch-size', # 全称
    dest='BatchSize', # 参数解析后换个别名,没有的话,用上面的全称
    default='16', # 默认值
    type=int, # 参数类型,int float str
    help='batch size', # 提示参数含义
    required=True, # 表明参数必选,默认False
    choices=[16, 32, 64] # 参数值可选范围
    )

    parser.add_argument(
    '-ug', # 简称
    '--use-gpu', # 全称
    dest='gpu', # 参数解析后换个别名
    action='store_true', # 注:可选 store_true, store_false 命令行不加-ug,默认值为 False 和 True
    help='use gpu', # 提示参数含义
    )

    parser.add_argument(
    '-lr'
    '--learning-rate',
    default=0.001,
    type=float
    )

    args = parser.parse_args() ## 命令行参数解析后存放的位置
    print(args.__dict__)
    print(args.BatchSize)
  • 运行:python test2.py -bs 64

    1
    2
    {'BatchSize': 64, 'gpu': False, 'lr__learning_rate': 0.001}
    64
  • 注:若没有指定简称和全称---,参数值以先后定义的顺序注入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('a')
    parser.add_argument('--b')
    parser.add_argument('c')
    args = parser.parse_args()
    print(args.__dict__)

    # python test3.py 1 --b 2 3
    # {'a': '1', 'b': '2', 'c': '3'}
坚持原创技术分享,您的支持将鼓励我继续创作!
0%