为什么argparse自定义类型函数不能与nargs一起使用?

时间:2019-06-14 10:24:02

标签: python lambda argparse

这些行有效:

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('foo', nargs='+', type=lambda x:x.split('/'))
parser.parse_args(['3/5', '4/6']) # output Namespace(foo=[['3', '5'], ['4', '6']])

但以下内容不适用。为什么?

唯一的区别是这一次类型转换程序使用列表推导将字符串转换为整数。

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('foo', nargs='+', type=lambda x:[[int(a), int(b)] for a,b in x.split('/')])
parser.parse_args(['3/5', '4/6']) # Raise error: argument foo: invalid <lambda> value: '3/5'

1 个答案:

答案 0 :(得分:0)

基本上,您要在这里做的是

define( 'AI1WM_MAX_FILE_SIZE', 2 << 28 );

这是ValueError(“没有足够的值要解压”)。 router.post('/request/waiting/:startingDate', (req, res) => { WaitingRequest.findOneAndUpdate({ requestID: req.body.requestID }, { $set: { startingDate: new Date(req.params.startingDate) } }).then(result => { return res.status(201).json({ message: 'Updated and saved', result: result }) }).catch(error => { res.send({ error }) }) }); 隐藏实际错误,如果您的for a, b in '3/5'.split('/')... 函数有问题,则以通用argparse进行响应。您可能想使用实际的ArgumentError来调试它:

type