Python版本:Python 3.5.1
Django版本:Django 1.10.2
我正在尝试编写自己的django自定义命令,我注意到要接受一个参数,它总是以列表形式结束。
请参阅https://docs.python.org/3/library/argparse.html
请注意,整数的参数是整数列表。
我希望有一个参数,它接受以明显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)
答案 0 :(得分:1)
您的问题在于创建命令行参数path
的方式。
从文档中
nargs - 应该使用的命令行参数的数量。
和nargs='+'
表示一个或多个空格分隔的参数,这些参数将由argparse
转换为列表。
现在,如果你期待一个字符串,你可以这样做:
parser.add_argument('path', type=str) #type is str by default, no need to specify this explicitly.
请注意,当您想要限制选择类型等时,nargs
非常有用。
例如:
parser.add_argument('path', nargs='+', choices=['a', 'b', 'c'])
这样,您可以提供一系列选项,这些选项可作为消费列表使用。
甚至:
parser.add_argument('path', choices=['a', 'b', 'c'])
如果您想将单个选项作为字符串。
上阅读更多内容