我想擦除在每次循环迭代之前打印的所有控制台输出。
目前我有这样的代码:
import sys
from time import sleep
def delete_last_printed_lines(n=1):
CURSOR_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2K'
for _ in range(n):
sys.stdout.write(CURSOR_UP_ONE)
sys.stdout.write(ERASE_LINE)
for x in range(1, 3):
delete_last_printed_lines(3)
print('')
print('Some information #{0}'.format(x))
print('And a lot of different prints')
sleep(1)
但它工作得不是很好,它“移动”控制台窗口并删除运行命令。
有没有办法解决它?如果它只是Python 3+解决方案,那就没关系。
答案 0 :(得分:1)
您可以使用子流程:
# -*- coding: utf-8 -*-
import sys
import subprocess
from time import sleep
for x in range(1, 3):
subprocess.call('clear')
print('')
print('Some information #{0}'.format(x))
print('And a lot of different prints')
sleep(1)
答案 1 :(得分:0)
Unbutu解决方案是调用 reset :
for x in range(1, 3):
subprocess.call('reset')
print('Some information #{0}'.format(x))
print('And a lot of different prints')
sleep(1)