这一定非常简单,但我正在努力与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
的值?
答案 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']