Python: 在命令提示符中一个一个地打印字母
Python: Printing letters one by one in Command Prompt
最近我学习了 Python 3.4 编程,并且阅读了另一个关于如何 printing slowly (Simulate typing) 的问题,并在我的代码中使用了类似的 def。
import time
def type(str):
for letter in str:
print(letter, end='')
time.sleep(0.02)
print("\n")
type("This sentence is typed.")
在 IDLE 中一切正常,但是一旦我使用 Windows 命令提示符尝试 运行 它,CMD 会等待 IDLE 键入它所花费的时间(在这种情况下为半秒)并且然后像打印出来一样吐出来
我认为 time.sleep 声明以某种方式被破坏,尽管
print("One")
time.sleep(2)
print("Two")
工作得很好。
有什么方法可以一次打印一个字母,并且字母之间的间隔很短,还是根本不可能?
提前致谢!
尝试在每个字符后对 stdout
强制刷新。问题是 stdout
通常会被缓冲,直到输出换行符、EOF 或一定数量的字节。
import time
import sys
def type(str):
for letter in str:
print(letter, end='')
sys.stdout.flush()
time.sleep(0.02)
print("\n")
type("This sentence is typed.")
或者,在 Python3 中,正如@PeterWood 提到的,您可以更改您的打印,使其自动刷新。
print(letter, end='', flush=True)
最近我学习了 Python 3.4 编程,并且阅读了另一个关于如何 printing slowly (Simulate typing) 的问题,并在我的代码中使用了类似的 def。
import time
def type(str):
for letter in str:
print(letter, end='')
time.sleep(0.02)
print("\n")
type("This sentence is typed.")
在 IDLE 中一切正常,但是一旦我使用 Windows 命令提示符尝试 运行 它,CMD 会等待 IDLE 键入它所花费的时间(在这种情况下为半秒)并且然后像打印出来一样吐出来
我认为 time.sleep 声明以某种方式被破坏,尽管
print("One")
time.sleep(2)
print("Two")
工作得很好。
有什么方法可以一次打印一个字母,并且字母之间的间隔很短,还是根本不可能?
提前致谢!
尝试在每个字符后对 stdout
强制刷新。问题是 stdout
通常会被缓冲,直到输出换行符、EOF 或一定数量的字节。
import time
import sys
def type(str):
for letter in str:
print(letter, end='')
sys.stdout.flush()
time.sleep(0.02)
print("\n")
type("This sentence is typed.")
或者,在 Python3 中,正如@PeterWood 提到的,您可以更改您的打印,使其自动刷新。
print(letter, end='', flush=True)