我正在将一个我无缘无故编写的 C++ 程序移植到 Python 3。有一个使用 spin() 函数的 spinner() 函数。这些在程序顶部显示一个横幅。但是,由于某种原因我无法弄清楚,spin() 函数在被调用之前正在执行。sleep(1) 也在被调用之前被执行。我无法弄清楚为什么在被调用之前执行这些。它当前先执行 sleep() 函数,然后在调用之前执行 spin() 函数。它们不应该在显示第一个数组项之后执行。我曾尝试将 spin() 和 sleep() 函数放在不同的位置,以尝试解决从何处调用它的问题,但这样做会破坏当前的功能。import timeimport sysdef spin(): spinner = ['/', '-', '\\', '|', ''] for i in spinner: sys.stdout.write(i) time.sleep(1) sys.stdout.write("\b") sys.stdout.flush()def spinner(): text = "\tVigenere Cipher\n" textArray = list(text) for i in range(len(textArray)): for x in range(i): sys.stdout.write(textArray[x]) spin() sys.stdout.write("\r") sys.stdout.flush()spinner()我希望它从 textArray 打印一个字符,显示微调器,打印下一个字符,显示微调器等。实际结果是它先休眠,打印微调器,然后打印第一个字符。
1 回答

慕少森
TA贡献2019条经验 获得超9个赞
您需要在sys.stdout.flush()
之前而sleep
不是之后调用。flush
是强制文本从缓冲区到屏幕的魔法,并且在这sleep
意味着你(通常;缓冲是一个实现细节)在sleep
完成之前不会看到任何东西。
添加回答
举报
0/150
提交
取消