我的问题是,我希望能够在Python控制台上重写/清除以前的打印行。这个问题已经被问了很多次(例如AA>),但是代码非常相同。
(答案是正确的,对我来说根本不打印):
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()
也没有帮助。 最佳答案
你需要从命令行运行你的程序,而不是在空闲状态下运行。
那么,这应该管用:
import sys
import time
for i in range(10):
sys.stdout.write("\r" + "Loading" + "." * i)
time.sleep(1)
sys.stdout.flush()
print()
\r
转到行的开头。所以你必须确定印刷品至少和以前的一样长。否则,您将看到以前打印的部分内容。