我是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()
答案 0 :(得分:1)
写类似:
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)