如何在python中构造可选参数

时间:2018-06-20 19:30:34

标签: python

我是python的新手,我想知道最好的方法是在特定的数据验证案例中构建和构建代码。我正在构建使用3个参数并将其保存到变量的cmd行脚本。第三个参数是可选的。我应该如何处理可选参数。当我未指定第三个参数时,提示“ IndexError:列表索引超出范围”。

为什么最简单,最实用的方法是使用可选参数来验证用户输入?

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()

2 个答案:

答案 0 :(得分:1)

我会推荐argparse库。教程here.

写类似:

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.

答案 1 :(得分:1)

为此,您应该使用argparse。您不需要始终标记,有时仅使用位置参数会更好,因为它可以节省键入内容,例如与cat。试试下面的例子

parser = argparse.ArgumentParser(description='LOLCATZ')
parser.add_argument('cat')
parser.add_argument('id')
parser.add_argument('guid')
parser.add_argument('optional1', nargs='?')  # positional and optional
parser.add_argument('--optional2')  # optional flag
args = parser.parse_args()
print(args)