在argparse中使用'--help'命令

问题描述

我正在使用argparse库,但是由于任何原因,我都很难打印-h参数。这是我的全部信息来源:

# df.py
import argparse
parser = argparse.ArgumentParser(description='Dedupe assets in our library.')
parser.add_argument('--masters',nargs='?',default=None,type=int,help='Enter one or more ids.')

if __name__ == '__main__':
    print ('hi')

给我的印象是通过以下方式输入--h标志:

$ python df.py --help

自动使用help文件打印argparse,但是我似乎是在做错误的假设。看来我还必须在代码添加类似的内容

if '--help' in sys.argv: print (parser.parse_args(['-h']))

使用argparse库时,输出帮助参数的“正确”方法是什么?

解决方法

您忘记了实际上解析参数;如果您在定义解析器后放入parser.parse_args(),它将对-h / --help作出响应。通常,您会执行以下操作:

args = parser.parse_args()

以便可以使用args对象访问已解析的参数数据。

我还将注意到,参数解析几乎肯定应该由if __name__ == '__main__':防护来控制;至少可以说,如果您没有被调用为主脚本,那么解析命令行是不寻常的。成语代码看起来像:

# df.py
def main():
    import argparse  # Could be moved to top level,but given it's only used
                     # in main,it's not a terrible idea to import in main
    parser = argparse.ArgumentParser(description='Dedupe assets in our library.')
    parser.add_argument('--masters',nargs='?',type=int,help='Enter one or more ids.')
    args = parser.parse_args()

    print ('hi')

    # Do something with args.masters or whatever

if __name__ == '__main__':
    main()