整个程序中的打印延迟

时间:2018-11-17 14:01:01

标签: python python-3.x printing

我希望打印程序中的每条消息,每个字符之间的延迟很小。

我可以使用

import time

string = "hello world"
for char in string:
   print(char, end='')
   time.sleep(.25)

针对单个字符串执行此操作。我可以使用__print__方法将其推断给类,但这仍然需要我每次想使用编辑后的打印方法时都使用一个类。如何为整个程序中打印的每个字符增加延迟,以便可以在任何地方使用print("foo")并期望它能按预期工作?

4 个答案:

答案 0 :(得分:1)

好吧,您可以为此创建一个函数,即:

def print_delayed(string):
    for char in string:
       builtins.print(char, end='', flush=True) # flush gets the actual delay, otherwise
                                                # the text is printed after all the sleeps
       time.sleep(.25)

然后,您可以将print设置为此函数,即:

print = print_delayed

但是,我不建议您这样做;只需调用您已创建的新函数,而不是覆盖内置函数即可。

这里是working example

答案 1 :(得分:1)

就像阿尔宾在评论中说的那样,最好创建一个函数并调用它,而不是像这样的print

def delayed_print(v, *args, **kwargs):
    print(v,*args, **kwargs)
    time.sleep(.25)

string = "hello world"
for char in string:
    delayed_print(char, end='')

答案 2 :(得分:1)

您可以像这样重载print函数:

import builtins
import time

def print(*args, **kwargs):
    for char in args[0]:
        builtins.print(char, end='')
        time.sleep(.25)

这将使模块级的功能过载。

答案 3 :(得分:0)

您可以覆盖打印:

import time
import sys

string = "hello world"

def print(x):
    for char in x:
      sys.stdout.write(char)
      time.sleep(.25)
    sys.stdout.write('\n')

print(string)

将为您带来想要的东西。