Python 解析器是否总是将参数作为列表接受?
Python版本:Python 3.5.1 Django版本:Django 1.10.2 我正在尝试编写自己的django自定义命令,我注意到,为了接受参数,它总是以列表的形式结束 看 请注意,整数的参数是一个整数列表 我想有一个参数,它接受以str格式编写的目录的相对路径或绝对路径 我的问题是: 甚至可以只接受参数作为解析器对象的单个str对象吗? 如果可能,我需要改变什么? 我现在的代码是Python 解析器是否总是将参数作为列表接受?,python,django,Python,Django,Python版本:Python 3.5.1 Django版本:Django 1.10.2 我正在尝试编写自己的django自定义命令,我注意到,为了接受参数,它总是以列表的形式结束 看 请注意,整数的参数是一个整数列表 我想有一个参数,它接受以str格式编写的目录的相对路径或绝对路径 我的问题是: 甚至可以只接受参数作为解析器对象的单个str对象吗? 如果可能,我需要改变什么? 我现在的代码是 def add_arguments(self, parser): parser.add_arg
def add_arguments(self, parser):
parser.add_argument('path', nargs='+', type=str)
# Named (optional) arguments
parser.add_argument(
'--whiteware',
action='store_true',
dest='whiteware',
default=True,
help='Affects whiteware variants only',
)
def handle(self, *args, **options):
directory_in_str = options['path']
print(directory_in_str)
您的问题在于创建命令行参数路径的方式 根据文件 nargs—应该使用的命令行参数的数量 nargs='+'表示一个或多个空格分隔的参数,这些参数将由argparse强制转换到列表中 现在,如果需要字符串,可以执行以下操作:
parser.add_argument('path', type=str) #type is str by default, no need to specify this explicitly.
请注意,当您想要限制选择类型等时,NARG非常有用
例如:
parser.add_argument('path', nargs='+', choices=['a', 'b', 'c'])
通过这种方式,您可以提供一系列选项,这些选项将作为消费列表提供
甚至:
parser.add_argument('path', choices=['a', 'b', 'c'])
如果要将单个选项作为字符串
你可以阅读更多关于目标是什么?作为问题的一部分,你能给出一个有效输入和一个无效输入的例子吗?nargs='+'是将输入作为字符串接收的内容。删除它,您应该将参数作为字符串获取。@Exprator如果我可以对您的评论投反对票,我会的。我已经在创建自定义命令文件。我专门讨论自定义命令classThank@karthikr中的解析器对象。您的评论是我需要的正确方向。非常感谢。请随意创建一个答案,以便我可以将其标记为正确。