推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zerh925
V2EX  ›  Python

python argparser 问题

  •  
  •   zerh925 · Feb 27, 2015 · 2802 views
    This topic created in 4100 days ago, the information mentioned may be changed or developed.
    做了一个类似工具包一样的py程序,我想让这个工具包达到一些像CLI一样的效果。比如:
    python tools foo1 arg1
    python tools foo2 [-v] arg1 arg2

    大致代码如下:
    parser = argparser.ArgumentParser()
    parser.add_argument('foo', type=str, choices=['foo1', 'foo2'])
    parser.add_argument('-a1', '--arg1')
    parser.add_argument('-a2', '--arg2')

    用parser.foo来做功能选择,是positional arg。其中foo1要接一个参数,foo2接两个。接的参数是optional args。

    现在的问题是,如果是这样写,那么实际效果是:
    python tools foo1 -a1 arg1
    python tools foo2 -a1 arg1 -a2 arg2

    我想在foo1的时候后面跟一个positional arg,foo2的时候后面跟两个positional arg,这样命令中的-a1和-a2就可以省略了。有什么办法吗?
    7 replies    2015-03-01 21:45:14 +08:00
    xxr3376
        1
    xxr3376  
       Feb 27, 2015   ❤️ 1
    我用click。。
    zerh925
        2
    zerh925  
    OP
       Feb 27, 2015
    @xxr3376 看了一下,感觉还不错
    lilydjwg
        3
    lilydjwg  
       Feb 27, 2015
    用 subparser?
    dawncold
        4
    dawncold  
       Feb 27, 2015   ❤️ 1
    chilaoqi
        5
    chilaoqi  
       Feb 27, 2015
    argparse的文档看下,用narg应该很容易满足。 但是感觉按照你的需求自己写判断是不是更简单了?
    jamiesun
        6
    jamiesun  
       Feb 27, 2015
    @xxr3376 click好啊
    aec4d
        7
    aec4d  
       Mar 1, 2015
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1203 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 23:30 · PVG 07:30 · LAX 16:30 · JFK 19:30
    ♥ Do have faith in what you're doing.