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的输入,等等。。。因此,这只是一个评论,而不是一个答案!