我一直在玩OSX终端中的ansi颜色(bash v.3.2.57,Yosmite)。
一旦我填满终端窗口(如向下滚动时),我遇到了背景颜色行为的问题。
背景颜色将填充右侧白色空间,同时也会跳过"跳过"一条线(见图)。它按我想要的方式工作,直到输出使窗口滚动。如果我使用"清除"命令输出看起来很好,直到输出再次填满终端窗口。
下面的代码只是获取不同的颜色组合(我为这个问题略微截断了它。)
我有一种感觉终端是责怪而不是python,因为输出最初起作用。谁能解释这种行为?欢呼声。
#coloured text in terminal
#ANSI escape sequences
std_txt = '\033[0m'
print('colour test' +'\n')
print(' X in 033[0;Xm')
for x in range(30,35):
print ''.join(["\033[0;",str(x), 'm']) + 'test' +'\t' + str(x)
print std_txt +'\n' + ('end')
print('colour test 2' +'\n')
print(' X in 033[0;30;Xm')
for x in range(40,45):
print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x)
print std_txt +'\n' + ('end')
ps:填写终端窗口或滚动我的意思。 如果你的终端窗口是80x24,填充它将使用24行,并且> 25将使其滚动。对不起,我发现在这个问题上很难解释这一点。
答案 0 :(得分:1)
问题是你没有在换行前重置颜色,所以终端试图提供帮助。
更改
print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x)
要:
print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x) + std_txt