argparse python模块行为的解释:资本占位符来自哪里?

时间:2011-07-18 01:50:48

标签: python argparse

我正在尝试编写命令行界面(第一次),在阅读了argparseoptparsegetopt之后,我选择了argparse因为几个关于SO和网络中的建议。调整了一点advice of Mr. 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.

所以我的第一个问题是:为什么SEARCHDO_SOMETHING_ELSE用大写字母书写?第二个问题是:我是否打破任何标准? 有没有更好的方法(我可以学习一个很好的现实世界的例子)如何使用python构建干净且有用的命令行界面?并且有陷阱应该避免,在编写cmd接口时?

2 个答案:

答案 0 :(得分:7)

大写字母项目只是价值占位符;他们是从选项的目的地获取的。您可以通过metavar=的{​​{1}}参数指定其他占位符:

http://docs.python.org/dev/library/argparse.html#metavar

答案 1 :(得分:2)

以下是我挖出的一些基本的argparse资源:

argparse上的一些幻灯片: http://www.slideshare.net/tisto/argparse-python-command-line-parser

一个小例子: 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/