将 argparse 参数设置为默认开关
Set argparse argument as default switch
我的 test.py
文件有这些说明:
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter", default="latest")
parser.add_argument("-q", "--query")
我想在不显式设置 "query" 参数(“-q”或“--query”)开关的情况下 运行 脚本成为可能,即如果我调用:
python test.py something
"something" 自动指定为查询参数。
这可能吗?
像这样的东西会起作用:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter", default="latest")
parser.add_argument("-q", "--query")
parser.add_argument("query_string",nargs='?', default=False)
args = parser.parse_args()
if args.parameter:
print("zoinks a parameter! %s" %args.parameter)
if args.query or args.query_string:
print("making a query %s" % (args.query or args.query_string))
对于 dest
值,可选参数可以设置与位置相同的属性:
parser = argparse.ArgumentParser()
parser.add_argument("-q", "--query", dest='query_string')
parser.add_argument("query_string", nargs='?', default='default')
args = parser.parse_args()
print parser.parse_args('other'.split())
# Namespace(query_string='other') # the positional value
print parser.parse_args('-q other'.split())
# Namespace(query_string='default') # the positional default
print parser.parse_args('more -q other'.split())
# Namespace(query_string='other') # the optional's value
您可以对多个参数使用相同的 dest
。但细微差别如何“?”处理位置会产生看似不可预测的结果。
在 '-q other'
的情况下,命名空间值首先设置为 'other',但当位置最后为 'parsed' 时,它会被位置默认值覆盖。
在 'more -q other'
示例中,位置值 'more' 被设置,然后被 '-q' 值覆盖。
我的 test.py
文件有这些说明:
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter", default="latest")
parser.add_argument("-q", "--query")
我想在不显式设置 "query" 参数(“-q”或“--query”)开关的情况下 运行 脚本成为可能,即如果我调用:
python test.py something
"something" 自动指定为查询参数。
这可能吗?
像这样的东西会起作用:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter", default="latest")
parser.add_argument("-q", "--query")
parser.add_argument("query_string",nargs='?', default=False)
args = parser.parse_args()
if args.parameter:
print("zoinks a parameter! %s" %args.parameter)
if args.query or args.query_string:
print("making a query %s" % (args.query or args.query_string))
对于 dest
值,可选参数可以设置与位置相同的属性:
parser = argparse.ArgumentParser()
parser.add_argument("-q", "--query", dest='query_string')
parser.add_argument("query_string", nargs='?', default='default')
args = parser.parse_args()
print parser.parse_args('other'.split())
# Namespace(query_string='other') # the positional value
print parser.parse_args('-q other'.split())
# Namespace(query_string='default') # the positional default
print parser.parse_args('more -q other'.split())
# Namespace(query_string='other') # the optional's value
您可以对多个参数使用相同的 dest
。但细微差别如何“?”处理位置会产生看似不可预测的结果。
在 '-q other'
的情况下,命名空间值首先设置为 'other',但当位置最后为 'parsed' 时,它会被位置默认值覆盖。
在 'more -q other'
示例中,位置值 'more' 被设置,然后被 '-q' 值覆盖。