Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用'--帮助';argparse中的命令_Python_Python 3.x_Argparse - Fatal编程技术网

Python 使用'--帮助';argparse中的命令

Python 使用'--帮助';argparse中的命令,python,python-3.x,argparse,Python,Python 3.x,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_

我正在使用库,但由于任何原因,我很难打印
-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
自动使用
argparse
打印文件的
帮助
内容,但我似乎做出了错误的假设。似乎我还必须在代码中添加类似的内容

if '--help' in sys.argv: print (parser.parse_args(['-h']))
使用
argparse
库时,打印帮助参数的“正确”方式是什么?

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

args = parser.parse_args()
# 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()
这样就可以使用
args
对象来访问解析的参数数据

我还将注意到,参数解析几乎肯定应该由
控制,如果
guard;如果您没有被作为主脚本调用,那么至少可以说,解析命令行是不寻常的。惯用代码如下所示:

args = parser.parse_args()
# 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()

当我尝试了所有这些方法(argparse、docopt、fire)时,我只能说-使用click,这是最好的,然后转储argparse@bitranox你为什么这么说?想添加一个答案来解决这个问题吗?我只是浏览了一下你的问题-我的50美分是,你可以尝试“单击”而不是argparse-它只是更好更干净,特别是对于分组命令,来自stdin的输入,等等。。。因此,这只是一个评论,而不是一个答案!