argparse Python模块行为的解释:大写占位符是从哪里来的?

4

我正在尝试编写一个命令行界面(首次尝试),在阅读了有关argparseoptparsegetopt的资料后,由于这里和其他地方都有几条建议,我选择了argparse。根据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构建干净和有用的命令行界面?在编写命令行界面时,应该避免哪些陷阱

2个回答

7

2

这里有几个我找到的关于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/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接