我正在使用argparse,我试图使用choice来限制选项。
对于接受的值,我正在寻找以下格式的输入: NUMBER km, NUMBER m, NUMBER cm。例如:3493cm。只要数字以km,cm或m结尾,我就不在乎数字是多少。
我试过了:
parser.add_argument('-d','--distance',
choice=['*m','*km','*cm'])
那没有用。
作为学习python的努力的一部分,我决定编写一个小的单元转换脚本,从脚本中获取输入。
谢谢。
答案 0 :(得分:0)
choices
不能以这种方式使用。 argparse
使用的测试是
astr in choices
匹配列表,元组,字典键中的字符串。一个专门的类可以匹配*
模式,但是更高级。
choices
的替代方法是编写自定义type
函数。或者在解析后将该函数应用于该值。
您的首要任务是提出一个测试字符串是否符合您标准的功能
def mytest(astr):
if astr ...:
return astr
else:
raise ValueError('your message')
解析后运行
mytest(args.distance)
一旦你开始测试,我们就可以讨论将它包含在解析器中。