如何用argparse定义参数的简单示例?

时间:2015-05-11 15:31:55

标签: python

这一定非常简单,但我正在努力与official argparse docs - 经过20分钟的沮丧谷歌搜索,我放弃并在这里问!

我正在使用Python 2.7。我只想运行带有参数的Django management command,如下所示:

python manage.py my_command db_name='hello'

...然后从我的脚本中获取db_name的值。

这是我尝试过的:

def handle(self, *args, **options):
    print args
    print options

这给了我

('db_name=mydb',)
{'pythonpath': None, 'verbosity': u'1', 'traceback': None, 'no_color': False, 'settings': None}

是否有一种简单的方法(除了字符串解析args - 肯定不是最好的方法)来获取db_name的值?

1 个答案:

答案 0 :(得分:2)

如果您愿意对您调用脚本的方式稍作修改,则以下内容将起作用:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--db_name', action='store', dest='db_name',
                    help='Store database name')
results = parser.parse_args()
print "db_name:", results.db_name

你需要这样称呼它:

python script.py --db_name Test

请注意,您必须使用传统的Unix命令行参数(--name value),而不仅仅是name=value

上述脚本的输出是:

python script.py --db_name Test
db_name: Test

使用db_name

访问results.db_name

您还可以从自定义Django Management命令访问这些参数。利用example,我相信这样的事情会起作用:

def add_arguments(self, parser):
    # Named (optional) arguments
    parser.add_argument('--db_name',
        action='store',
        dest='db_name',
        help='Store database name')

def handle(self, *args, **options):
    if options['db_name']:
        # do something with your db_name

在这种情况下,您的变量可在options['db_name']

中访问
相关问题