【发布时间】:2017-08-11 00:27:36
【问题描述】:
我希望 "arg1" "arg2" 周围的 引号 被视为不在同一个列表中的单独参数,并且 "arg1 arg2" 作为单独的参数,但在同一个列表中。
test.py 取自here
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--nargs', nargs='*')
for _, value in parser.parse_args()._get_kwargs():
if value is not None:
print(value)
运行 1
python test.py --nargs "arg arg2"
输出 1
['arg arg2']
我想这很好吗?但是 arg 和 arg2 是否被视为单独的参数?
运行 2
python test.py --nargs "arg" "arg2"
输出 2
['arg', 'arg2']
在同一个列表中,但它们是否被视为单独的参数?我需要它们是这样的:
['arg'] ['arg2']
【问题讨论】:
-
你的 shell 决定了参数的分离方式,而不是 python。大多数 shell 会将
"arg arg2"视为单个参数,并将其传递给 python。如果您想将单词分成单独的参数,则必须以通常的方式进行(例如使用str.split())。 -
@Roelant 格式:'arg1' 'arg2' 应该是两个单独的 args 在两个单独的行中,而 'arg1 arg2' 应该是两个单独的 args 在同一行中。
-
@glibdud 感谢您的澄清。由于我想在空格上拆分 - str.split()) 就足够了。但是无法正确实施。