知道在使用Python的argparse时用户是否指定了参数

Mat*_*ias 5 python default-value argparse

假设我使用argparse进行了python测试,其中有几个参数:

  • IP(默认值:127.0.0.1)
  • enabled_features(默认值:[A,B,C])

有时候,我想更改默认的enabled_features,让我们说[A,B,C,D]:

  • 取决于我需要知道IP的东西(所以它不能真正成为argparse默认值的默认值)
  • 只有当用户没有指定"enabled_features"时......这就是我无法知道的!

那么在argparse类中是否有一个属性可以知道:

opts = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

...一个参数实际上是由用户指定的,即一个人使用了类似的东西:

$ python my_test.py --enabled_features A B C
Run Code Online (Sandbox Code Playgroud)

并不是:

$ python my_test.py
Run Code Online (Sandbox Code Playgroud)

谢谢!

hpa*_*ulj 3

opts包含可以为您提供的所有信息argparse。因此,您必须测试某些默认值(最常见None),或者测试是否缺少该属性(如果default=argparse.SUPPRESS)。

另一种方法是指定一个合理的default,而不用担心用户是否在输入中指定了这些值或其他值。用户指定的值和值本身哪个更重要?