我如何使用 python argparse 进行任意选择?
How can I have an aribtrary choice using python argparse?
我正在使用 argparse,我正在尝试使用 choice 来限制选项。
对于可接受的值,我正在寻找以下格式的输入:NUMBERkm,NUMBERm,数字厘米。例如:3493cm。我不在乎数字是多少,只要它以公里、厘米或米结尾即可。
我试过:
parser.add_argument('-d','--distance',
choice=['*m','*km','*cm'])
那没用。
作为我努力学习 python 的一部分,我决定编写一个从参数中获取输入的小型单位转换脚本。
谢谢。
choices
不能这样用。 argparse
使用的测试是
astr in choices
匹配列表、元组、字典键中的字符串。专门的 class 可以匹配 *
模式,但那更高级。
choices
的替代方法是编写自定义 type
函数。或者将该函数应用于解析后的值。
您的首要任务是想出一个函数来测试字符串是否满足您的条件
def mytest(astr):
if astr ...:
return astr
else:
raise ValueError('your message')
解析后运行
mytest(args.distance)
一旦您的测试工作正常,我们就可以讨论将其包含在解析器中。
我正在使用 argparse,我正在尝试使用 choice 来限制选项。
对于可接受的值,我正在寻找以下格式的输入:NUMBERkm,NUMBERm,数字厘米。例如:3493cm。我不在乎数字是多少,只要它以公里、厘米或米结尾即可。
我试过:
parser.add_argument('-d','--distance',
choice=['*m','*km','*cm'])
那没用。
作为我努力学习 python 的一部分,我决定编写一个从参数中获取输入的小型单位转换脚本。
谢谢。
choices
不能这样用。 argparse
使用的测试是
astr in choices
匹配列表、元组、字典键中的字符串。专门的 class 可以匹配 *
模式,但那更高级。
choices
的替代方法是编写自定义 type
函数。或者将该函数应用于解析后的值。
您的首要任务是想出一个函数来测试字符串是否满足您的条件
def mytest(astr):
if astr ...:
return astr
else:
raise ValueError('your message')
解析后运行
mytest(args.distance)
一旦您的测试工作正常,我们就可以讨论将其包含在解析器中。