【问题标题】:Explanation for argparse python modul behaviour: Where do the capital placeholders come from?argparse python 模块行为的解释:大写占位符来自哪里?
【发布时间】:2011-07-18 01:50:47
【问题描述】:

我正在尝试编写一个命令行界面(第一次),在阅读了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接口的时候?

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    大写字母项目只是值占位符;它们取自选项的目的地。您可以通过add_argumentmetavar= 参数指定替代占位符:

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

    【讨论】:

      【解决方案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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-23
        • 2021-03-03
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2020-03-08
        • 2015-08-13
        相关资源
        最近更新 更多