"SyntaxError: неожиданный EOF при синтаксическом анализе" при переборе словаря в PDB

У меня есть pdb трассировка, установленная внутри GET запрос. Я хочу напечатать все атрибуты объекта запроса. Я пытаюсь следующее, в pdb:

(Pdb) request
<GET /foo HTTP/1.1>
(Pdb) for d in dir(request):
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)

Я уверен, что здесь есть что-то фундаментальное, чего мне не хватает.

3 ответа

Решение

Вы не можете вводить многострочные операторы в pdb, Вы можете использовать commands команда, если блок кода должен выполняться в точке останова; help commands для дополнительной информации.

Вы также можете иногда свернуть многострочное утверждение в одну строку. Например:

for d in dir(request): print d

В вашем конкретном случае, однако, кажется, что либо print dir(request) или же pp dir(request) было бы достаточно.

В приглашении pdb сделайте следующее:

(Pdb) a = [1, 2, 3, 4]
(Pdb) for i in a:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
(Pdb) import code
(Pdb) code.interact(local=locals())
>>> for i in a:
...     print i
... 
1
2
3
4

Это старый вопрос, но есть обновленный отладчик Python под названием ipdb.

Это позволяет иметь завершение табуляции, поддержку цвета и магические функции, а также все оригинальные функции pdb.

И это позволяет использовать многострочный for loops.

Другие вопросы по тегам