【发布时间】:2016-07-30 22:17:00
【问题描述】:
我的问题是,我希望能够在 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() 也无济于事。
【问题讨论】:
-
终端必须支持
\033[F之类的序列(请参阅termcap(3))。 AFAIK windows 对终端功能的支持一直很差
标签: python python-3.x stdout