argparse python modul 行为的解释:大写占位符来自哪里?

发布于 2024-11-25 07:05:37 字数 1339 浏览 0 评论 0 原文

我正在尝试编写一个命令行界面(第一次),在阅读了 argparseoptparsegetopt 后,我选择了 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.

所以我的第一个问题是:为什么是 SEARCHDO_SOMETHING_ELSE 用大写字母书写? 第二个问题是:我是否违反了任何标准? 是否有更好的方法(或者是我可以学习的一个很好的现实世界示例)如何使用 python 构建干净且有用的命令行界面?以及应该避免的陷阱 、写cmd接口的时候?

I am trying to write a command line interface (for the first time) and after reading up about argparse, optparse and getopt I chose argparse because of several recommendations here on SO and elswhere in the net. Adapting a little of the advice of Mr. van Rossum I hooked up my first command line interface like this:

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())

Doing python myscript.py -h results in:

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.

So my first question is: Why are SEARCH and DO_SOMETHING_ELSE written in CAPITAL LETTERS? The second question would be: Do I break any standards? Is there a better way (ore a nice real world example I can learn from) how to build clean and useful command line interfaces with python? And are there pitfalls one should avoid, when writing cmd interfaces?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

两人的回忆 2024-12-02 07:05:37

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

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 of add_argument:

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

深海蓝天 2024-12-02 07:05:37

以下是我挖掘出的一些基本 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/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文