Immor+al
Янв. 10, 2012 16:11:22
Не могу понять, время от времени в моем скрипте вылазит такое:
>re -D -U book //имя скрипта
Invalid number. Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
… разные строки выведенные через принт()
Invalid number. Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
Unbalanced parenthesis.
Missing operator.
Я использую в своем скрипте только: OptionParser, subprocess.call(cmd, shell=False), и:
process = subprocess.Popen(cmd.split(' '),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = process.communicate()
PyCharm не находит никаких ошибок в коде, такое вылазит только в рантайме и то не всегда.
Что это может быть?
все что делает скрипт - это ребейс гитом примерно 10 репозиториев (с разными проверками, чтоб не затереть локальные изменения)
Immor+al
Янв. 10, 2012 16:27:21
Кажется разобрался, было:
(stdoutdata, stderrdata) = process.communicate()
if stdoutdata:
log_file.write(stdoutdata + "\n")
Я обернул stdoutdata в str и ошибка пропала.
Похоже оно на конкатенации со строкой и падало
Апдейт: Бага осталась. Причем при дебаггинге оно не падает.
Есть какие нибудь динамические анализаторы кода которые могут находить такие ошибки?
Чем еще может быть вызвана эта ошибка?
py.user.next
Янв. 11, 2012 01:37:51
Immor+al
Не могу понять, время от времени в моем скрипте вылазит такое:
скопируй точно
неправильная конкатенация строк выглядит по-другому
Immor+al
Янв. 16, 2012 13:21:36
Блин, проблема оказалась не в питоне, а в батнике-враппере:
Я там использовал %TIME% для замера времени выполнения скрипта и в редких случаях оно давало такую ошибку. Без этого костыля все работает как надо.
@echo off
call D:\_python\python-utils\src\rebaser.py -a D:\ %1 %2 %3 %4 %5 %6 %7 %8 %9