目录

命令行和默认参数:

报错代码:

解决方法:

FLAGS 未知参数:

argparse参数讲解

位置参数

可选参数

单短杠参数


命令行和默认参数:

 parser.add_argument(
        "image", 
        nargs="?",  # 表示参数可传 0 或 1 次
        default="default.png",  # 默认值
        help="Input image path (default: default.png)"
    )

报错代码:


import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description='Process some integers.')

# 添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')

parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')
# 解析参数
args = parser.parse_args()

# 使用参数
print(args.accumulate(args.integers))

运行:

python E:\project\jijia\tools_jijia\aaa.py --aaa 5

报错:

error: unrecognized arguments: --aaa

解决方法:


import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description='Process some integers.')

# 添加参数
parser.add_argument('--integers', metavar='N', type=int, nargs='+',default=[1,2],
                    help='an integer for the accumulator')
if 0:
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                        const=sum, default=35,
                        help='sum the integers (default: find the max)')
parser.add_argument('--num1', type=int,default=33, help='The first number')
# args = parser.parse_args()
args, unknown_args = parser.parse_known_args()
print(args.num1)
print(args.integers)

    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument("--pkl_file", type=str, help="pkl_file", default="")
    parser.add_argument("--video_path", type=str, help="video_path", default="")
    parser.add_argument("--save_dir", type=str, help="save_dir", default="see3d_inpaint_api_res")
    args, unknown_args = parser.parse_known_args()

FLAGS 未知参数:


FLAGS = argparse.Namespace()

def initialize():
    parser = argparse.ArgumentParser()
    parser.add_argument('--input-model-path', type=str,default='/shared_disk/datasets/public_datasets/human_pose/experiments/finetune_0517')
    parser.add_argument('--config-name', type=str, default='nlf_s')
    # parser.parse_args(namespace=FLAGS)
    args, unknown = parser.parse_known_args(namespace=FLAGS)
	
	
	    ckpt = tf.train.Checkpoint(model=model)
    s = ckpt.restore(FLAGS.input_model_path)

argparse参数讲解

在 argparse 中,参数前面的两个短杠 -- 用于表示可选参数,而没有短杠或者只有一个短杠的参数则有不同的含义,以下是详细解释:

位置参数

  • 像 parser.add_argument('num1', type=int, help='The first number') 和 parser.add_argument('num2', type=int, help='The second number') 这样定义的参数是位置参数。
  • 位置参数是指在命令行中按照顺序依次提供的参数,它们的位置是固定的,必须按照定义的顺序提供相应的值。例如,对于上述定义的两个位置参数 num1 和 num2,在命令行中调用程序时,需要按照顺序输入两个整数值,如 python my_program.py 5 10,其中 5 会被赋值给 num110 会被赋值给 num2

可选参数

  • 当参数前面添加两个短杠 -- 时,如 parser.add_argument('--optional_param', type=str, help='An optional parameter'),则表示该参数是可选参数。
  • 可选参数在命令行中不是必须提供的,可以根据需要选择性地提供。例如,对于上述定义的可选参数 --optional_param,在命令行中可以这样调用程序 python my_program.py --optional_param value,其中 value 会被赋值给 --optional_param。如果不提供该可选参数,程序也不会报错,其对应的变量会使用默认值(如果有定义默认值的话)。

单短杠参数

  • 还有一种情况是参数前面只有一个短杠 -,这种参数通常也被视为一种可选参数,但它一般用于定义缩写形式的参数,多个单短杠参数可以组合在一起使用。例如,parser.add_argument('-v', '--verbose', action='store_true', help='Increase verbosity'),这里定义了一个缩写为 -v 的可选参数,它等同于完整的 --verbose 参数,用于控制程序的详细输出级别。在命令行中可以使用 -v 或 --verbose 来提供该参数,如 python my_program.py -v 或 python my_program.py --verbose,两者的效果是一样的。

综上所述,在 argparse 中参数前面的两个短杠用于标识可选参数,与位置参数和单短杠缩写的可选参数在使用方式和功能上有所不同,开发者可以根据具体的需求灵活地定义和使用不同类型的参数来实现更丰富的命令行交互功能。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐