Python 如何强制argparse返回字符串列表?

Python 如何强制argparse返回字符串列表?,python,argparse,iterable,Python,Argparse,Iterable,我需要使用argparse从命令行接受数量可变的字符串,但当我传递零个参数时,我会得到一个字符串作为结果,而不是一个字符串列表 argparser = argparse.ArgumentParser() argparser.add_argument( '--example', nargs='*', default='default_value', type=str) args = argparser.parse_args() for e in args.exa

我需要使用argparse从命令行接受数量可变的字符串,但当我传递零个参数时,我会得到一个字符串作为结果,而不是一个字符串列表

argparser = argparse.ArgumentParser()
argparser.add_argument(
    '--example',
    nargs='*',
    default='default_value',
    type=str)

args = argparser.parse_args()

for e in args.example:
    print(e)
当执行这个
python程序--example first_arg second_arg
时,我得到了预期的结果:

first_arg
second_arg
即使只有一个参数,一切都很好,但是执行这个
python程序

d
e
f
a
u
l
t
_
v
a
l
u
e

我需要迭代列表,而不考虑它有多少元素,我如何解决这个问题?提前感谢。

将默认设置为列表而不是字符串:

argparser.add_argument(
    '--example',
    nargs='*',
    default=['default_value'],
    type=str)

默认值是可以在python中迭代的
str
,您可以将默认值更改为如下列表:

argparser.add\u参数(
"举例",,
nargs='*',
默认值=[“默认值”],
类型=str)

通常,最好执行
打印(args)
。在本例中,它将显示
名称空间(例如class='default value')
。默认值是按原样分配的,而不是解析的。