Python argparse required=True 但 --version 功能?
Posted
技术标签:
【中文标题】Python argparse required=True 但 --version 功能?【英文标题】:Python argparse required=True but --version functionality? 【发布时间】:2012-08-20 20:30:05 【问题描述】:在我的所有脚本中,我使用标准标志 --help
和 --version
,但是我似乎无法弄清楚如何使用 parser.add_argument(..., required=True)
制作 --version
。
import sys, os, argparse
parser = argparse.ArgumentParser(description='How to get --version to work?')
parser.add_argument('--version', action='store_true',
help='print version information')
parser.add_argument('-H', '--hostname', dest='hostname', required=True,
help='Host name, IP Address')
parser.add_argument('-d', '--database', dest='database', required=True,
help='Check database with indicated name')
parser.add_argument('-u', '--username', dest='username', required=True,
help='connect using the indicated username')
parser.add_argument('-p', '--password', dest='password', required=True,
help='use the password to authenticate the connection')
args = parser.parse_args()
if args.version == True:
print 'Version information here'
$ ./arg.py --version
usage: arg.py [-h] [--version] -H HOSTNAME -d DATABASE -u USERNAME -p PASSWORD
arg.py: error: argument -H/--hostname is required
是的,我希望--hostname
和其他是必需的,但我总是希望--version
能够像--help
(和-h
)一样正常工作。
$ ./arg.py --help
usage: arg.py [-h] [--version] -H HOSTNAME -d DATABASE -u USERNAME -p PASSWORD
How to get --version to work?
optional arguments:
-h, --help show this help message and exit
--version print version information
-H HOSTNAME, --hostname HOSTNAME
Host name, IP Address
-d DATABASE, --database DATABASE
Check database with indicated name
-u USERNAME, --username USERNAME
connect using the indicated username
-p PASSWORD, --password PASSWORD
use the password to authenticate the connection
对让--version
工作有任何帮助吗?
【问题讨论】:
应该是(以避免关键错误:) if 'version' in args: print 'Version information here' 【参考方案1】:add_argument
有一个特殊的版本 action
关键字参数(如此处所述:argparse#action)。
试试这个(从工作代码复制):
parser.add_argument('-V', '--version',
action='version',
version='%(prog)s (version 0.1)')
【讨论】:
如docs.python.org/library/argparse.html#action 中所述,+1。请注意,这正是 OP 所要求的;当有required=True
参数时,一种使--version
参数起作用的方法。以上是关于Python argparse required=True 但 --version 功能?的主要内容,如果未能解决你的问题,请参考以下文章