Python shell 不打印回车 returns

Python shell does not print carriage returns

我在 Debian Wheezy 上使用 IDLE (Python 2.7)。我收集了问题 here and here。我尝试应用他们所说的,但得到了一些奇怪的结果。如果我在 Python shell 中打印回车符 returns 或退格键,而不是实际 getting 那些,我会得到带有 bs 的正方形并且 cr 在其中。我不能在这里展示它们,因为它们不会复制过来。

如何获得真正的马车return? 这是我的代码,基于我上面引用的问题:

sys.stdout.write("Extracted: %d% Skipped %d% \r" % (len(f),len(skipped)))
sys.stdout.flush()

终端处理此类特殊字符的能力各不相同。一个类似的问题was answered by Wayne Werner,谁说IDLE只是不处理那些特殊字符(即打印一个替代字符,而不是移动光标或删除。),这可能是有充分理由的。

如果没有像 Wayne 提到的那样编写补丁,您可能会发现 运行 您的程序在本机终端中确实可以按预期工作。 (即 python path/to/your/program)。

来自评论

如果您希望程序知道它的环境(如评论中所问),可以(也许最简单)创建一个在程序执行时手动设置的命令行开关。如果您从快捷方式或其他程序(可能是批处理文件)启动,您可以通过将其合并到预先编写的命令中来自动执行该过程。

这样的开关看起来像:

python path/to/your/program --terminal //For a full terminal
python path/to/your/program --IDLE //For IDLE

备注

看完Terry Jan Reedy's comment, I'd to point out that his guidance toward tkinter(and on the general facets of this situation) may in fact be the most helpful for a thorough solution to the issue. Check 出来。