【问题标题】:How to parse command line arguments in Python? [duplicate]如何在 Python 中解析命令行参数? [复制]
【发布时间】:2011-03-15 03:15:09
【问题描述】:

可能重复:
What's the best way to grab/parse command line arguments passed to a Python script?

我希望能够在我的 Python 2.6 程序中解析命令行参数。

理想情况下,我希望能够处理这些情况:

# Show some help
./myprogram --help

# These are equivalent
./myprogram --block=1
./myprogram -b 1

# This means verbose, and twice as verbose:
./myprogram -v
./myprogram -vv

【问题讨论】:

    标签: python arguments command-line


    【解决方案1】:

    查看argparse 模块(或optparse 用于较旧的 Python 版本)。
    请注意,argparse/optparsegetopt 的更新、更好的替代品,因此如果您不熟悉此功能,推荐使用它们。来自getopt 文档:

    注意 getopt 模块是一个命令行选项解析器,其 API 旨在让 C getopt() 函数的用户熟悉。不熟悉 C getopt() 函数或希望编写更少代码并获得更好帮助和错误消息的用户应考虑改用 argparse 模块。

    【讨论】:

    • “较旧的 Python 版本”是指超过 8 天前发布的每个版本。
    • @Forest - 嘘,我们现在就在未来! ;)
    • 随着时间的推移,这个答案越来越正确。
    【解决方案2】:

    Python 具有内置的参数处理功能,带有 getopt 模块。

    它可以处理长短形式的参数以及“裸”和参数化版本(--help--num=7)。

    对于您的特定用例(还有更多),您可能会查看以下内容:

    opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"])
    

    我不确定它是否允许像-vv 这样的多字符单连字符变体。我会自己使用-v-V 来让我的生活更轻松。

    【讨论】:

      【解决方案3】:

      optfunc 是一个有趣的小模块。如果您想快速编写一个小脚本,那就太好了。对于更大的事情,我会选择argparse,就像其他人写的那样。

      【讨论】:

        【解决方案4】:

        比该链接更好的选择是模块 OptParse 或 GetOpt,根据您使用的 Python 版本,最新的..2.7 和 3.1.2 内置了更新的模块。文档在官方 python.org 参考上有一组非常有用的文档和这些模块的示例。如果您访问 python.org 并快速搜索 OptParse 或 GetOpt,您将拥有所需的一切。

        【讨论】:

          【解决方案5】:

          可能有更好的方法,但我只会使用 sys.argv 并在需要的地方添加条件,即

          if '--v' or '--vv' in sys.argv :
              print 'verbose message'
          

          【讨论】:

            猜你喜欢
            • 2020-01-01
            • 2020-01-25
            • 2013-11-08
            • 1970-01-01
            • 2013-02-01
            • 2017-10-29
            • 2013-02-15
            • 2019-12-06
            • 2011-04-27
            相关资源
            最近更新 更多