parser.parse_args()在docker运行中止运行的解决方法

在使用paddleocr的模型打包的时候,一直无法正常运行,然后加入logging后发现在

parser.parse_args()处停止运行了。坑了我好几天,天天打包。。。。

解决方案:

parser.parse_args() 替换为 parser.parse_known_args()[0] 后代码正常运行。


parser.parse_args()用法介绍:argparse传参模块调用

测试时发现,下面三种写法输出结果是一致的:

import argparse

parser = argparse.ArgumentParser()
yaml_path='requirements.txt'
parser.add_argument('-f', '--config_file', dest='config_file',type=argparse.FileType(mode='r'),default=yaml_path)

args = parser.parse_args()
print('args:', args)

args = parser.parse_args(args=[])
print('args:', args)

args = parser.parse_known_args()[0]
print('args:', args)

parse_known_argsparse_args的区别如下:

  • parse_known_argsparse_args 是 argparse 模块提供的两个方法,它们的主要区别在于当解析器遇到未知的命令行选项或参数时的行为。
  • parse_known_args() 方法不会抛出错误,它会返回两个值,第一个值是已知选项和参数的值的命名空间(namespace)对象第二个值是包含未知选项和参数的列表。 此方法可以在使用多个解析器的情况下特别有用,其中一个解析器可以解析一些选项和参数,另一个解析器可以解析剩余的选项和参数。
  • 相反,如果使用 parse_args() 方法,则解析器会抛出 SystemExit 异常,并显示错误消息。这可能是在脚本中使用的一种标准方法,因为错误消息会显示在控制台上,指示用户如何正确使用脚本。

  • 因此,通常情况下,当你知道需要解析的选项和参数时,使用 parse_args() 方法可能更为合适;而当你不能确定选项和参数的列表时,或者需要在多个解析器之间共享选项和参数,则应该使用 parse_known_args() 方法。

扫描二维码关注公众号,回复: 15167656 查看本文章

猜你喜欢

转载自blog.csdn.net/March_A/article/details/130851415