如何构造python中的可选参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (279)

我正在构建cmd行脚本,它接受3个参数并将它们保存到变量中。第三个参数是可选的。我应该如何处理可选的参数。 什么是最简单和实用的方法,为什么要用一个可选的参数来验证用户输入呢?

user_cat = sys.argv[1]
user_id = sys.argv[2]
user_guid = sys.argv[3]

def validate(user_cat, argv_cat_list, user_guid):
    if len(user_cat) > 10 or user_cat not in argv_cat_list:
        print("Error! Please specify a valid category (AddDevice, GetAccount, c, p, GetDevices, r ,s)")
        sys.exit()
    elif len(user_id) == 36 or user_id.startswith("SAM-") and len(user_guid) == False:
        getInfo()
        sys.exit()
    elif len(user_cat) >= 10 and len(user_guid) == 36 and user_id.startswith("FRA-"):
        print ("Test-hest!")
    else:
        print("Error! Please specify a valid input")
        sys.exit()
提问于
用户回答回答于

试一试:

user_guid = None    # or some default
try:
    user_guid = sys.argv[3]
except:
    print ('No third arg')
...
if not user_guid == None:
    # do stuff with user_guid
else:
    # do stuff without user_guid
用户回答回答于

我建议写一些类似于:

parser = argparse.ArgumentParser(description = "[insert some description here]")
parser.add_argument('-i', "--user_cat", help = '[insert some help]')
parser.add_argument('-i', "--cat_list", help = '[insert more help]')
parser.add_argument('-u', "--user_guid", nargs = '?', help = '[insert some help]')
args = parser.parse_arg()
# Access the variables with args.user_cat, args.cat_list, etc.

扫码关注云+社区

领取腾讯云代金券