如何从Python调试器(pdb)中输入内容

3
这个问题可以通过以下简单示例来更好地说明。我正在使用pdb来调试以下脚本(它是Python 3):
astring = input("input here: ")
当我在上面的那一行输入时,我会得到以下提示并输入"abc":
input here: abc

但是无论我从键盘输入什么,都会出现错误,例如:

NameError: "name 'abc' is not defined"
> /home/wang/tmp/test.py(4)<module>()
-> astring = input("input here: ")
如何在调试时输入?
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1

你在Python 2中使用了错误的函数。请使用raw_input代替input


谢谢指出。实际上我正在使用Python 3。我会编辑问题。 - Wang Xiaojie

0

看起来输入的 "abc" 被视为一个评估。然而,你的程序是 input("input here "),但你给出的例子是 "input here:",而 pdb 的输出是 "input a line:"。

由于这些差异,我不知道它们是否是同一个程序。尝试输入 n(下一行代码)而不是 abc,看看会发生什么。


感谢您的帮助。在更新脚本后,我使用了旧错误。现在问题已经得到纠正。当输入n时,它返回相同的错误,只是将“abc”替换为“n”。 - Wang Xiaojie
@WangXiaojie 不好意思...你要么没有使用Python 3(否则某些东西已经覆盖了你的“input”函数)。在Python 3上:python3 -c "x = input('input here:')"可以工作,而python2.7 -c "x = input('input here:')"会导致NameError: ...。也许你应该执行input sys; print(sys.version),看看你正在运行什么? - donkopotamus
@donkopotamus:你说得对!非常感谢!我正在使用“pdb test.py”来尝试pdb,其中“test.py”有一个“#!/usr/bin/python3”。我默认它正在使用python3! - Wang Xiaojie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,