Ошибка отладчика Python – цикл for заканчивается блоком ifPython

Программы на Python
Ответить
Anonymous
 Ошибка отладчика Python – цикл for заканчивается блоком if

Сообщение Anonymous »

У меня есть скрипт Python со следующей базовой структурой:

Код: Выделить всё

import os
import sys
import glob
import re
...
def read_busclass_files(rule_blocks: dict[str, RuleBlocks]):
...
for file_path in matching_files:
try:
...
if (action_info is not None):
class_map[class_name].actions[action_name] = action_info
# print (f"{file_path} done.")
except IOError as e:
print(f"Error reading file {file_path}: {e}")

return class_map
...
def main():
...
class_map = read_busclass_files(rule_blocks)
...
return 0

if __name__ == "__main__":
exit(main())
Когда я запускаю скрипт из терминала, все в порядке. (Если я добавлю строку для отчета sys.version, она сообщит версию Python: 3.12.0 (tags/v3.12.0:0fb18b0, 2 октября 2023 г., 13:03:39) [MSC v.1935 64 бит (AMD64)]
Когда я запускаю скрипт в отладчике, выполнение останавливается на строке for с такой ошибкой:

Код: Выделить всё

Exception has occurred: TypeError
an integer is required
File "C:\landmark\ox1\src\hcm\scripts\ValidateInvokes.py", line 275, in read_busclass_files
for file_path in matching_files:
File "C:\landmark\ox1\src\hcm\scripts\ValidateInvokes.py", line 512, in main
class_map = read_busclass_files(rule_blocks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\landmark\ox1\src\hcm\scripts\ValidateInvokes.py", line 522, in 
exit(main())
^^^^^^
TypeError: an integer is required
Если я раскомментирую строку print (f"{file_path} Done."), то в отладчике все будет в порядке. Но когда этой строки нет, ошибка возникает при попытке выполнения if (action_info не имеет значения None): (выполнение этой строки каким-то образом вызывает ошибку в строке for.) Действительно ли это ошибка в отладчике Python?

Подробнее здесь: https://stackoverflow.com/questions/791 ... h-if-block
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»