【问题标题】:Why doesn't sys.stdout.write('\b') backspace against newlines?为什么 sys.stdout.write('\b') 不退格换行?
【发布时间】:2011-04-05 08:00:37
【问题描述】:

比较:

for item in range(0, 5):
    sys.stdout.write('c')
for item in range(0, 5):
    sys.stdout.write('\b')

如您所想,但:

for item in range(0, 5):
    sys.stdout.write('\n')
for item in range(0, 5):
    sys.stdout.write('\b')

仍然给你留下五个换行符。有什么想法吗?

【问题讨论】:

标签: python


【解决方案1】:

在今天看来,退格能够在控制台上处理换行符似乎是合理的,但由于没有反向换行,这与电传打字机不向后兼容。

【讨论】:

  • 这让我怀念 decwriter 的咔嗒声,虽然只有大约 120 毫秒。
  • 有鉴于此,有些人可能会发现this answer 是一种在标准输出中重写一行的简单方法。概要:sys.stdout.write('ccccc\r') 如果您想一直回到换行符,它可以让您知道备份多远。
【解决方案2】:

这是关于控制台窗口的行为:退格仅在一行内起作用,它们不会在换行上备份。

【讨论】:

    【解决方案3】:

    这与 Python 完全无关。处理任何视觉效果的是您的控制台驱动程序。它们中的大多数将模拟 ASR33 电传打字机……退格意味着将打印头向后移动一个空格,如果可能的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2021-07-13
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 2022-09-22
      • 1970-01-01
      相关资源
      最近更新 更多