我正在玩控制台动画。我发现制作一行很容易,但我开始考虑在控制台中将 GIF 动画制作为 ASCII 的想法。
import time
def main():
counter = 0
while True:
with open(ascii_path + 'dog-' + str(counter) + '.txt', 'r', encoding="utf8") as f:
print('\b', f.read(), sep='', end='', flush=True)
time.sleep(0.5)
if counter == len(filenames):
counter = 0
else:
counter += 1
if __name__ == "__main__":
main()
最终发生的情况是,它只会连续打印每个文本文件,而不是像下面的动画那样替换内容。
for x in range(3):
for frame in r'-\|/-\|/':
# Back up one character then print our next frame in the animation
print('\b', frame, sep='', end='', flush=True)
sleep(0.2)
即使我尝试在每次打印后清除控制台,它似乎也没有做任何事情。
os.system('cls')
有图书馆可以做到这一点吗?
只要您的终端(模拟器)支持,您实际上可以在没有任何外部库的情况下解决这个问题ANSI 转义序列 https://en.wikipedia.org/wiki/ANSI_escape_code。这些可以像文本一样打印到控制台,但它们可以移动光标,更改文本的颜色,甚至滚动终端的部分,而不是打印。下面是一个小示例,只要打印的行不会导致终端滚动,它就会执行您想要的操作,但如果您无论如何都要清除控制台,它应该可以工作。
import time
nlines = 2
# scroll up to make room for output
print(f"\033[{nlines}S", end="")
# move cursor back up
print(f"\033[{nlines}A", end="")
# save current cursor position
print("\033[s", end="")
for t in range(10):
# restore saved cursor position
print("\033[u", end="")
print(f"Line one @ {t}")
print(f"Line two @ {t}")
t += 1
time.sleep(.5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)