>>> print("x\by")
y
print("a", end="")
print("a", end="")
print("a", end="")
print("h", end="")
aaah
但是有了多个print语句,我得到了这个输出-
^{pr2}$为什么它在每个字符后都打印出额外的空格。在
当从Windows命令行执行时,代码可以正常工作,我在Pycharm的控制台中测试了它。在
但是在pythonrepl中,\b
会删除前一个字符,而它应该将光标向后移动一个字符。在
>>> print("a\b", end="")
>>>
每个终端或控制台都可以自由地以不同的方式处理
\b
字符。Python所能做的就是将数据写到sys.stdout
。在在这里,您正在使用的控制台将光标向前移动以进行单独的写入调用,它显示。而且
\b
字符不会擦除控制台中的任何内容,它只会将光标移回同一个write call内的一个点。在因此,对于},现在已经记录了它写入了3个字符,因此输出位置被设置为第3列。下一个
print('x\by', end='')
,控制台输出x
,向后移动一步,在同一位置输出{print()
将从新位置开始输出数据。在您的
print()
代码恰好可以在大多数终端或控制台上工作,因为大多数终端或控制台不关心您输出多少字符,只关心光标当前的位置。但是你有一个行为不同的控制台并不是Python的错。在使用Python交互式解释器时,要考虑到它也会打印;因此使用
print("a\b", end="")
会让Python用下一个>>>
提示符覆盖该行:使用
^{pr2}$print("a\b\n", end="")
代替,你会看到a
仍然存在:写在最后
我想这就是问题所在,试着在这里写下输出结果,因为现在我无法测试它
在这种情况下,flush=True是正确的答案
如果实际是在python控制台中打印,那么flush参数首先输出结果,然后完成函数。在多个转义字符的情况下,您应该看到退格符或任何其他打印出来的字符。我不知道为什么会发生这种情况,因为我刚刚开始使用Python,但是经过深入的研究和实验,我发现这是真的。在
相关问题 更多 >
编程相关推荐