Argparse在CentOS 7上未正确解析参数

2024-09-30 14:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在CentOS 7机器上设置一个服务器,它将定期运行Python脚本。但是,我在argparse解析传递给脚本的参数时遇到了问题

以下是我的参数设置的片段:

    main_parser = argparse.ArgumentParser(
     description=__doc__,
     formatter_class=argparse.RawDescriptionHelpFormatter)
    main_parser.add_argument('--loglevel','-l',
                             help='loglevel NONE, NORMAL, VERBOSE, VVERBOSE, DEBUG',
                             default="ERROR")

    main_parser.add_argument("--dbfile", "-d", default="archi_tool.db")
    main_parser.add_argument("--prefix", "-p", default="LSST_")
    main_parser.set_defaults(func=None) # if none then there are  subfunctions
    subparsers = main_parser.add_subparsers(title="subcommands",
                       description='valid subcommands',
                       help='additional help')
    # Subcommand  to ingest csv to sqlite3 db file
    mkdb_parser = subparsers.add_parser('mkdb', description=mkdb.__doc__)
    mkdb_parser.set_defaults(func=mkdb)
    mkdb_parser.add_argument("--force", "-f", help="remove existing db file of the same name", default=False, action='store_true')


    # Subcommand  to ingest csv to sqlite3 db file
    ingest_parser = subparsers.add_parser('ingest', description=ingest.__doc__)
    ingest_parser.set_defaults(func=ingest)
    #ingest_parser.add_argument("sqldbfile")

    list_parser = subparsers.add_parser('list', description=list.__doc__)
    list_parser.set_defaults(func=list)
    list_parser.add_argument(   "--chr", "-c", help='Chromosome Numbers' , default='1')

    # Subcommand  to ingest csv to sqlite3 db file
    era_ingest_parser = subparsers.add_parser('era_ingest', description=era_ingest.__doc__)
    era_ingest_parser.set_defaults(func=era_ingest)

    dbinfo_parser = subparsers.add_parser('dbinfo', description=dbinfo.__doc__)
    dbinfo_parser.set_defaults(func=dbinfo)

    # reasonably detailed list of model summary information
    modelinfo_parser = subparsers.add_parser('modelinfo', description=modelinfo.__doc__)
    modelinfo_parser.set_defaults(func=modelinfo)

    # reasonably detailed list of model summary information
    like_parser = subparsers.add_parser('like', description=like.__doc__)
    like_parser.set_defaults(func=like)
    like_parser.add_argument("pattern", help="SQL pattern for matching")

    archi_interface.parsers(subparsers)
    conventions.parsers(subparsers)

    args = main_parser.parse_args()

我尝试启动以下命令:

python archi_tool.py -l VERBOSE -p LSST mkdb

我也尝试过详细的变体:

python archi_tool.py --loglevel VERBOSE --prefix LSST mkdb

在CentOS 7上,它失败了,就像没有传递任何参数或调用了-h一样,显示了“用法”打印输出。我试过用pyenv安装的系统python(2.7.5)和python2.7.0运行

该脚本已经在MacOS上用Python2.7.10和Python2.7进行了测试,在Ubuntu上用Python2.7.10进行了测试。该脚本在这些环境中完美地运行,但在CentOS中却没有。我甚至尝试将上面的命令复制粘贴到MacOS终端和CentOS ssh中,以确保键入正确,但结果是相同的

CentOS怎么了?它以不同的方式对待争论吗


Tags: toaddparserdocmainhelpdescriptionargument