Ошибка утверждения Python при разборе аргумента - PullRequest
0 голосов
/ 05 июля 2018

Я портирую через существующий скрипт, который отлично работает на моем коллегном компьютере, который получает файл .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

Я прочитал, что ошибка обычно возникает, когда есть длинный код, который разбит на части и содержит квадратные скобки, и он был исправлен, но все равно всплывает.

РЕДАКТИРОВАТЬ: понял, в чем проблема. Пробелы.

Сотрудник, который последний раз редактировал скрипт, хотел, чтобы он выглядел аккуратно, поэтому он выровнял объявление списка параметров таким образом, чтобы запятые находились ниже друг друга. По одному параметру он случайно поместил пробелы внутри имени, а не за его пределы. Эти символы пробела приводили в замешательство аргументparser, когда он обрезал необработанную строку до параметров.

Когда вы подсасываете свой код, обязательно протестируйте его снова, прежде чем передавать его другим.

1 Ответ

0 голосов
/ 06 июля 2018

Понял, в чем проблема. Пробелы .

Сотрудник, который последний раз редактировал скрипт, хотел, чтобы он выглядел аккуратно, поэтому он выровнял объявление списка параметров таким образом, чтобы запятые были ниже друг друга. По одному параметру он случайно поместил пробелы внутри имени, а не за его пределы. Эти символы пробела приводили в замешательство аргументparser, когда он обрезал необработанную строку до параметров.

При добавлении кода в код обязательно проверяйте его снова, прежде чем передавать его другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...