【问题标题】:"SyntaxError: unexpected EOF while parsing" while iterating a dictionary in PDB在 PDB 中迭代字典时出现“SyntaxError:解析时出现意外 EOF”
【发布时间】:2012-03-19 20:56:35
【问题描述】:

我在GET 请求中设置了pdb 跟踪。我想打印请求对象的所有属性。我正在 pdb 中尝试以下操作:

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

我确信这里缺少一些基本的东西。

【问题讨论】:

    标签: python twisted pdb


    【解决方案1】:

    在 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
    

    【讨论】:

      【解决方案2】:

      您不能在pdb 中输入多行语句。不过,您可以使用commands 命令if 代码块将在断点处执行; help commands 了解更多信息。

      您有时也可以将多行语句合并为一行。例如:

      for d in dir(request): print d
      

      不过,在您的特定情况下,print dir(request)pp dir(request) 似乎就足够了。

      【讨论】:

      • 谢谢。正如我所怀疑的那样,一些基本的东西。
      • 哇,感谢您的指点!我只是假设 pdb 的工作方式与普通 python repl 的工作方式相同。
      【解决方案3】:

      这是一个老问题,但有一个更新的 Python 调试器,名为 ipdb

      它允许拥有制表符补全、颜色支持和魔术功能以及pdb 的所有原始功能。

      它允许多行for loops

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-25
        • 2011-07-15
        • 2019-04-28
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        相关资源
        最近更新 更多