Having options in argparse with a dash

前端 未结 5 1434
长发绾君心
长发绾君心 2020-12-12 18:58

I want to have some options in argparse module such as --pm-export however when I try to use it like args.pm-export I get the error that there is n

5条回答
  •  离开以前
    2020-12-12 19:05

    Unfortunately, dash-to-underscore replacement doesn't work for positionalarguments (not prefixed by --) like

    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('logs-dir',
                        help='Directory with .log and .log.gz files')
    parser.add_argument('results-csv', type=argparse.FileType('w'),
                        default=sys.stdout,
                        help='Output .csv filename')
    args = parser.parse_args()
    print args
    
    # gives
    # Namespace(logs-dir='./', results-csv=)
    

    So, you should use 1'st argument to add_argument() as attribute name and metavar kwarg to set how it should look in help:

    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('logs_dir', metavar='logs-dir',
                        nargs=1,
                        help='Directory with .log and .log.gz files')
    parser.add_argument('results_csv', metavar='results-csv',
                        nargs=1,
                        type=argparse.FileType('w'),
                        default=sys.stdout,
                        help='Output .csv filename')
    args = parser.parse_args()
    print args
    
    # gives
    # Namespace(logs_dir=['./'], results_csv=[])
    

提交回复
热议问题