我的问题是,我希望能够在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转到行的开头。所以你必须确定
印刷品至少和以前的一样长。否则,您将看到以前打印的部分内容。

08-04 11:14