Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 如何展平OptPass结构?_Python_Django_Optparse_Django Commands - Fatal编程技术网

Python 如何展平OptPass结构?

Python 如何展平OptPass结构?,python,django,optparse,django-commands,Python,Django,Optparse,Django Commands,我试图为Django构建一个管理命令,但遇到了一个问题。似乎option\u list变量需要是一个扁平的选项列表 以下是为简洁起见而编辑的代码: def add_options(self, parser): group = OptionGroup(parser, "Global Options") group.add_option("--logfile", metavar="FILE", \ help="log file. if omitted stderr w

我试图为Django构建一个管理命令,但遇到了一个问题。似乎
option\u list
变量需要是一个扁平的选项列表

以下是为简洁起见而编辑的代码:

def add_options(self, parser):
    group = OptionGroup(parser, "Global Options")
    group.add_option("--logfile", metavar="FILE", \
        help="log file. if omitted stderr will be used")
    ...
    ...
    ...
    group.add_option("-s", "--set", action="append", default=[], metavar="NAME=VALUE", \
        help="set/override setting (may be repeated)")
    parser.add_option_group(group)
    parser.add_option("-t", "--output-format", metavar="FORMAT", default="jsonlines", \
        help="format to use for dumping items with -o (default: %default)")
我需要获取所有选项
解析器
变量,然后将其展开,即移除
选项组
,同时保留选项并将其放入新变量中

Django需要一个类来指定它的选项,就像这样,这样它就可以在上面进行迭代

option_list = (
    make_option('-v', '--verbosity', action='store', dest='verbosity', default='1',
        type='choice', choices=['0', '1', '2', '3'],
        help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output'),
    make_option('--settings',
        help='The Python path to a settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),
    make_option('--pythonpath',
        help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".'),
    make_option('--traceback', action='store_true',
        help='Print traceback on exception'),
)

我对如何做到这一点感到非常困惑。

您应该可以添加如下选项:

option_list += (
    make_option("--logfile", metavar="FILE", \
        help="log file. if omitted stderr will be used"),
    make_option("-s", "--set", action="append", default=[], metavar="NAME=VALUE", \
        help="set/override setting (may be repeated)"),
)

您应该能够添加如下选项:

option_list += (
    make_option("--logfile", metavar="FILE", \
        help="log file. if omitted stderr will be used"),
    make_option("-s", "--set", action="append", default=[], metavar="NAME=VALUE", \
        help="set/override setting (may be repeated)"),
)

您可以使用
选项列表
属性获取选项:

>>> print parser.option_list
[<Option at 0x7f938c8243f8: -h/--help>, <Option at 0x7f938c82b3f8: -t/--output-format>]
这将失去一组选项,但如果你需要,你可能会摆弄一些东西来达到目的

简而言之,只需使用
选项列表
选项组
属性。
如何找到自己:使用
dir(parser)
并寻找最适用的属性;然后是一些尝试和错误。

您可以使用
选项列表
属性获得选项:

>>> print parser.option_list
[<Option at 0x7f938c8243f8: -h/--help>, <Option at 0x7f938c82b3f8: -t/--output-format>]
这将失去一组选项,但如果你需要,你可能会摆弄一些东西来达到目的

简而言之,只需使用
选项列表
选项组
属性。
如何找到自己:使用
dir(parser)
并寻找最适用的属性;然后是尝试和错误。

对不起,你的问题不清楚。为什么不能直接使用第二个代码块?为什么要先查看
OptionGroup
?我正在围绕第三方软件包构建一个管理命令包装器,不想修改它们的任何代码。好的,这也解释了为什么您一直使用optparse,它已被弃用,基本上被argparse取代。注意:自从python版本2.7以来,不鼓励使用optparse。optparse模块已弃用,不会进一步开发;argparse模块将继续开发。有关更多信息,请参阅。抱歉,您的问题不清楚。为什么不能直接使用第二个代码块?为什么要先查看
OptionGroup
?我正在围绕第三方软件包构建一个管理命令包装器,不想修改它们的任何代码。好的,这也解释了为什么您一直使用optparse,它已被弃用,基本上被argparse取代。注意:自从python版本2.7以来,不鼓励使用optparse。optparse模块已弃用,不会进一步开发;argparse模块将继续开发。有关更多信息,请参阅。