我的问题是,我希望能够覆盖/清除 python 控制台中以前打印的行。这个问题已经被问过很多次了(例如 Python - Remove and Replace Printed items ),但是使用的是完全相同的代码(答案被标记为正确,对我来说什么也没有打印出来):
for i in range(10):
print("Loading" + "." * i)
time.sleep(1)
sys.stdout.write("\033[F") # Cursor up one line
sys.stdout.write("\033[K") # Clear to the end of line
我得到输出(在 python IDLE 中):
Loading
[F[KLoading.
[F[KLoading..
[F[KLoading...
[F[KLoading....
[F[KLoading.....
[F[KLoading......
[F[KLoading.......
[F[KLoading........
[F[KLoading.........
[F[KLoading..........
[F[K
有任何想法吗?我在谷歌上搜索了很多,没有任何效果。它要么不打印任何内容,要么只是不覆盖。
如果有帮助,我正在运行 Windows 8.1 和 Python 3.51。通过 cmd 运行代码不会影响任何东西。
此外,添加 sys.stdout.flush()
也无济于事。
原文由 czyngis 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要从命令行运行您的程序,而不是从 IDLE 中运行。
然后,这应该有效:
\r
转到行首。所以你必须确保你打印的字符串至少和之前的字符串一样长。否则,您将看到以前打印的部分内容。