首页 > 解决方案 > python参数有或没有值,指定与否

问题描述

场景如下:

我需要实现一个命令行参数系统,它允许两者

-p <value>

-p

(没有给出 -p 的值)

有什么方法可以使用 argparse 来实现这一点,还是我必须手动解析 sys.argv?

非常感谢你!!!

标签: pythonargparseargv

解决方案


这会将 args.param 设置None为未指定选项(或未指定参数)时设置,否则设置为指定值

import argparse

UNSPECIFIED = object()

parser = argparse.ArgumentParser()
parser.add_argument('-p', action='store', dest='param', default=UNSPECIFIED, nargs='?')

args = parser.parse_args()

if args.param == UNSPECIFIED:
    print("Param unspecified")
else:
    print(args.param)

推荐阅读