argparse python modul 行为的解释:大写占位符来自哪里?
我正在尝试编写一个命令行界面(第一次),在阅读了 argparse
、optparse
和 getopt
后,我选择了 argparse
因为这里有关于 SO 和网络其他地方的一些建议。采纳了一点van Rossum 先生的建议,我连接了我的第一个命令行界面是这样的:
def main(argv=None):
if argv is None:
argv = sys.argv
desc = u'some description'
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-s', '--search', help='Search for someone.')
parser.add_argument('-c', '--do_something_else', help='Do something else.')
args = parser.parse_args()
print args
if __name__ == '__main__':
sys.exit(main())
执行 python myscript.py -h
结果是:
usage: dblp.py [-h] [-s SEARCH] [-c DO_SOMETHING_ELSE]
some description
optional arguments:
-h, --help show this help message and exit
-s SEARCH, --search SEARCH
Search for someone.
-c DO_SOMETHING_ELSE, --do_something_else DO_SOMETHING_ELSE
Do something else.
所以我的第一个问题是:为什么是 SEARCH
和DO_SOMETHING_ELSE
用大写字母书写? 第二个问题是:我是否违反了任何标准? 是否有更好的方法(或者是我可以学习的一个很好的现实世界示例)如何使用 python 构建干净且有用的命令行界面?以及应该避免的陷阱 、写cmd接口的时候?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大写字母项只是值占位符;它们是从选项的目的地获取的。您可以通过
add_argument
的metavar=
参数指定替代占位符:http://docs.python.org/dev/library/argparse.html#metavar
The capital letter items are just value placeholders; they're taken from the destination of the option. You can specify alternative placeholders via the
metavar=
param ofadd_argument
:http://docs.python.org/dev/library/argparse.html#metavar
以下是我挖掘出的一些基本 argparse 资源:
有关 argparse 的一些幻灯片:
http://www.slideshare.net/tisto/argparse-python-command -line-parser
一个小小的 argparse 示例:
http://www.rutherfurd.net/tag/argparse/
这是一个真实世界argparse 示例:
https://github.com/harijay/xtaltools/blob/e683fcef6a5ad7394b87382e58d4dce32a85585b/maskconvert.py
为了避免陷阱,这里有一个漂亮的 argparse 包装器,可以减少您的样板代码为一些常见用例编写:
http://travelingfrontiers.wordpress.com/2010/11/ 03/simple-python-argparse-wrapper/
Here are a couple basic argparse resources I dug up:
Some slides on argparse:
http://www.slideshare.net/tisto/argparse-python-command-line-parser
A little argparse example:
http://www.rutherfurd.net/tag/argparse/
Here is a real-world argparse example:
https://github.com/harijay/xtaltools/blob/e683fcef6a5ad7394b87382e58d4dce32a85585b/maskconvert.py
As far as avoiding pitfalls, here is a nice looking wrapper for argparse to reduce the boilerplate code you have to write for some common usecases:
http://travelingfrontiers.wordpress.com/2010/11/03/simple-python-argparse-wrapper/