Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析器是否总是将参数作为列表接受?_Python_Django - Fatal编程技术网

Python 解析器是否总是将参数作为列表接受?

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

Python版本:Python 3.5.1

Django版本:Django 1.10.2

我正在尝试编写自己的django自定义命令,我注意到,为了接受参数,它总是以列表的形式结束

请注意,整数的参数是一个整数列表

我想有一个参数,它接受以str格式编写的目录的相对路径或绝对路径

我的问题是:

甚至可以只接受参数作为解析器对象的单个str对象吗? 如果可能,我需要改变什么? 我现在的代码是

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中的解析器对象。您的评论是我需要的正确方向。非常感谢。请随意创建一个答案,以便我可以将其标记为正确。