在Python中慢速,逐字终端打印?

时间:2013-03-13 01:21:16

标签: python unix terminal printf

我正在编写一个涉及数据库的Python应用程序。对于它的地狱,我包括一个复活节彩蛋。如果用户决定从终端核对他的数据库,那么他将被提示用简单的(y / n)确认。但如果他输入DLG2209TVX,那么WarGames那个场景的线条就会打印出来。怀疑任何人都会找到它,除非他们查看我的来源,但那没关系。

问题在于,简单地打印线条会使场景过快,并且真的会破坏它。我在每个角色的线条之间实现了一个计时器,以减慢速度,而且它更好,但它看起来仍然不自然。有没有一种标准化的方法可以慢慢打印每个单词或字符,而不是一次做一行?或者我应该开始在单词之间添加计时器吗?

3 个答案:

答案 0 :(得分:4)

标准化?从来没听说过。但试试这个:

import random
import sys
import time

def slowprint(s):
    for c in s + '\n':
        sys.stdout.write(c)
        sys.stdout.flush() # defeat buffering
        time.sleep(random.random() * 0.1)

slowprint('Hello, world.')

调整0.1以更改字符之间的最大延迟,并在行之间添加冗长的time.sleep()以增加更具戏剧性的效果。

答案 1 :(得分:1)

import sys
import time
for c in gettysburg_address:
  sys.stdout.write(c)
  sys.stdout.flush()
  # 110 baud:
  time.sleep( 8./110 )
  # 300 baud:
  #  time.sleep( 8./300 )

答案 2 :(得分:1)

您还可以尝试curses.delay_output()

In [48]: import curses

In [49]: for x in "foo bar":
    sys.stdout.write(x)     #prints each char with a delay of 100ms
    curses.delay_output(100)
   ....:     
foo bar