参数解析期间的Python断言错误

时间:2018-07-05 13:29:00

标签: python arguments assertion

我正在移植一个现有脚本,该脚本可以在我的同事计算机上完美运行,该计算机在自变量中获取.elf文件并从中生成.vbf。因为所有其他脚本在我的计算机上都可以正常运行,这让我感到困惑。我使用python 2.7.15运行它。

vbf_builder_1_21_2.py --asw D:\ tmp \ FC8R009T4D3-20180523-182234.elf

Traceback (most recent call last):
  File "D:/Bence/Python/Ford/pupp_package/Ford_FC8_VBFbuilder/vbf_builder_1_21_2.py", line 1296, in <module>
    CustomerBuildScript().print_step("Get environment information")
  File "D:/Bence/Python/Ford/pupp_package/Ford_FC8_VBFbuilder/vbf_builder_1_21_2.py", line 482, in __init__
    self.initialize()
  File "D:\Bence\Python\Ford\pupp_package\Ford_FC8_VBFbuilder\BuildScriptBase.py", line 26, in initialize
    self.parseArguments()
  File "D:\Bence\Python\Ford\pupp_package\Ford_FC8_VBFbuilder\BuildScriptBase.py", line 80, in parseArguments
    self.args = parser.parse_args()
  File "C:\Python27\lib\argparse.py", line 1701, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "C:\Python27\lib\argparse.py", line 1733, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "C:\Python27\lib\argparse.py", line 1957, in _parse_known_args
    self.error(_('argument %s is required') % name)
  File "C:\Python27\lib\argparse.py", line 2373, in error
    self.print_usage(_sys.stderr)
  File "C:\Python27\lib\argparse.py", line 2335, in print_usage
    self._print_message(self.format_usage(), file)
  File "C:\Python27\lib\argparse.py", line 2291, in format_usage
    return formatter.format_help()
  File "C:\Python27\lib\argparse.py", line 281, in format_help
    help = self._root_section.format_help()
  File "C:\Python27\lib\argparse.py", line 211, in format_help
    func(*args)
  File "C:\Python27\lib\argparse.py", line 332, in _format_usage
    assert ' '.join(opt_parts) == opt_usage
AssertionError

Process finished with exit code 1

我已经阅读到错误,通常是当有一个长代码被砍掉并且包含方括号并且已经修复但仍然弹出时,才会发生。

编辑:意识到问题出在哪里。Spaces.

上次编辑脚本的同事希望使脚本看起来更整洁,因此他以某种方式使参数列表声明对齐,以使逗号位于彼此之间。在一个参数上,他不小心将空格放在名称的内部而不是名称的外部。当他将原始字符串切成参数时,该空格字符使argumentsparser陷入混乱。

在整理代码时,请确保在将其传递给其他人之前再次对其进行测试。

1 个答案:

答案 0 :(得分:0)

意识到问题所在。 Spaces

上次编辑脚本的同事希望使脚本看起来更整洁,因此他以某种方式使参数列表声明对齐,以使逗号位于彼此之间。在一个参数上,他不小心将空格放在名称的内部而不是名称的外部。这些空格字符使参数解析器在将原始字符串切成参数时变得一团糟。

在整理代码时,请确保在将其传递给其他人之前再次对其进行测试。