\ b python不删除字符

时间:2016-07-16 13:58:32

标签: python shell python-3.x

所以我浏览了一本书,并复制了与那里完全相同的代码。代码应该做的是,\ b删除该行,以便位置始终在同一位置更新。在我的情况下,虽然它绘制了奇怪的蓝色cirlces。我尝试了没有flush = True,但它给出了相同的结果。

while True:
    x,y  = pyautogui.position()
    posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
    print ( posStr, end='')
    print('\b' *len(posStr), end='', flush= True)

如何才能获得更新输出的效果?

编辑: 更确切地说: 当我有以下代码时:

import pyautogui
while True:
    x,y  = pyautogui.position()
    posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
    print ( posStr, end='')
    print('\b' *len(posStr), end='', flush= True)

我明白了:http://i.imgur.com/U8fsvIx.png 我为\ b打印了奇怪的蓝色圆圈(虽然它实际上应该删除一个字符)

当我使用代码时:

import pyautogui
while True:
    x,y  = pyautogui.position()
    posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
    print ( '\r'+ posStr, end='')

我得到以下结果:http://i.imgur.com/nznN2H3.png 我的文字无穷无尽。 不知怎的,我只是不能用'\ r'或'\ b'来删除已经写过的东西。

那么问题是什么?

1 个答案:

答案 0 :(得分:1)

while True:
    x, y = pyautogui.position()
    print('X: %4d   Y: %4d' % (x, y), end = '\r')

\r将导致下一个打印写入相同的内容。你的字符串必须具有相同的长度,或者你可以用空格填充。

\n会启动换行符\r不会。

替代解决方案:

while True:
    x, y = pyautogui.position()
    print('X: %d Y: %d' % (x, y) + ' ' * 20, end = '\r')

+ ' ' * 20将在屏幕上写入20个空格以删除行的其余部分

仅使用'X: %d Y: %d'而不填充(%4d+ ' ' * 20

# x, y = 1000, 1000 prints:
X: 1000 Y: 1000
# x, y = 30, 40 prints:
X: 30 Y: 401000

在第一次打印后,零将保留,您将获得脏数据。