如何使用argparse.REMAINDER选项在一个字符串中获取所有剩余参数?

时间:2019-04-16 02:48:15

标签: python-3.x argparse

我有一个字符串,可以表示多个参数,例如

from jira.client import JIRA

jira = JIRA(options={'server': 'https://server.atlassian.net'},
            basic_auth=('email@example.com', 'pass'))

我有一个定义为--arg1 val --arg2 val2 的选项,可以读取所有剩余的参数,我希望能够将其作为一个字符串而不是作为参数列表。

注意事项:我的值可能包含多个空格,并且想在解析的字符串中保留多个空格,例如,

argparse.REMAINDER

有没有办法做到这一点?

我没有找到一种方法可以将剩余的字符串吸收为argparse中的一个完整字符串。

假设此代码如下所示,

--arg1 the  longest bridge --arg2 very true

参数字符串为

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--class')
parser.add_argument('--value')
parser.add_argument('--parameters', nargs=argparse.REMAINDER)

我希望看到如下结果,

--class runner --value 3 --parameters --arg1 thread --desc the  whole world

1 个答案:

答案 0 :(得分:0)

它是用于分隔命令行参数的外壳,因此在调用脚本时只需要引用parameters参数,而无需使用argparse.REMAINDER。例如:

import argparse
import sys

parser = argparse.ArgumentParser()
parser.add_argument('-a')
parser.add_argument('-p')

print(sys.argv[1:])
print(parser.parse_args())

从Bash拨打电话:

$ ./test.py -a 3 -p 'the  whole world'

输出:

['-a', '3', '-p', 'the  whole world']
Namespace(a='3', p='the  whole world')