【问题标题】:Python 2.7: Cannot use subparsers with argparse on SolarisPython 2.7:不能在 Solaris 上使用带有 argparse 的子解析器
【发布时间】:2011-11-20 22:18:19
【问题描述】:

我在 Solaris 服务器上安装了 python2.7,并且正在使用argparse 检索命令行选项来编写 Python 脚本。

在我开始使用子解析器之前,一切都很好。脚本失败并给出此错误:

AttributeError: 'ArgumentParser' object has no attribute 'add_subpasers'

这是脚本的简短副本:

def main():
    parser = argparse.ArgumentParser(prog="myProg") 
    subparsers = parser.add_subpasers (title="actions", description="list of available actions", help="additional help")


    parser.add_argument("-v", "--verbose",              \
                        action="store_const",           \
                        dest="VERBOSE",                 \
                        default=False,                  \
                        const=True,                     \
                        help="runs in verbose mode")

    parser.add_argument("-V", "--version",                      \
                        action="version",                       \
                        version="myProg 0.1",                   \
                        help="prints the version number")

    parser.add_argument("-z",                                               \
                        type = file,                                        \
                        required = True,                                    \
                        dest = "CONF_FILE",                                 \
                        help = "defines the configuration file")


    parser.add_argument("-f",                                               \
                        type = file,                                        \
                        required = True,                                    \
                        dest = "ENV_FILE",                                  \
                        help = "defines the env definition file")

    parser.add_argument("-e",                                                       \
                        dest = "target_env",                                        \
                        default = None,                                             \
                        help = "limits actions to a specific service. (Optional)")



    parser_launch = subparsers.add_parser ("launch", help = "launches the environment")
    parser_create = subparsers.add_parser ("create", help = "creates the environment")
    parser_create.add_argument ("-p", type = int, help = "passes the necessary parameters for creation")

    pymss_namespace = parser.parse_args()

知道为什么吗?非常感谢。

【问题讨论】:

  • 您可以删除反斜杠以使行继续 - 它们是无用的。
  • 它们是不需要的,因为你在括号内(或括号或大括号),你只需要它们之外。

标签: python solaris argparse


【解决方案1】:

第 2 行:你写的是 parser.add_subpasers 而不是 parser.add_subparsers...

【讨论】:

    【解决方案2】:

    是的,您有一个错字 - 在您的脚本第 3 行中是 add_subparsers 而不是 add_subpasers

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 2018-12-31
      • 2014-06-14
      • 2018-03-21
      • 2017-09-19
      • 1970-01-01
      • 2013-12-21
      • 2013-10-07
      • 2020-12-04
      相关资源
      最近更新 更多