【问题标题】:Python treating carriage return as newline character. What can I do instead?Python 将回车视为换行符。我能做些什么呢?
【发布时间】:2023-04-10 20:17:02
【问题描述】:

我想编写一个打印Loading的代码,然后擦除它并打印Loading.,也擦除它并打印Loading..等等。所以我尝试使用\r,但python将其解释为\n。有没有我可以使用的字符来代替\r

我尝试改用\b,但Python 也无法识别它。例如,如果我打印qwerty\buiop,它只会打印qwertyuiop

这是我尝试的代码,使用回车:

import time
for y in range (5):
        for i in range (4):
                print("Loading","."*i, end="\r")
                time.sleep(0.5)

但是,它不是按我想要的方式打印,而是像这样打印

加载中

加载中。

加载中..

加载中...

在不同的行中。

我该如何解决这个问题?我可以使用其他角色吗?

我正在使用 IDLE 和 MacOS。

非常感谢!

【问题讨论】:

  • 我认为 IDLE 不会尝试像那样解释控制字符。尝试不同的外壳。

标签: python python-3.x time newline carriage-return


【解决方案1】:

我知道您现在可能已经知道答案了,但对于仍在寻找答案的人来说:

尝试使用空结束,同时在每个打印的开头使用 \r 覆盖前一个。

import time
for i in range (4):
  print("\rLoading","."*i, end ="")
  time.sleep(0.5)

【讨论】:

    【解决方案2】:

    尝试在终端中运行您的程序。

    不同的 shell 以不同的方式解释 \r 字符。他们中的许多人会将每个打印输出作为单独的输出而不是一个正在进行的流。终端应该按照你的想法解释它

    【讨论】:

    • 我试图在终端上运行这段代码,但它抛出了一个 SyntaxError,即使它在 IDLE 中没有抛出任何错误。另外,除了 IDLE 之外,我从来没有使用过任何东西来运行我的程序,所以我想把终端作为最后的手段。这个程序有没有办法在 IDLE 上运行?如果有其他方法可以代替,我不必使用\r
    • 我会看看我是否能找到一个空闲的例子,但我之前尝试过在不同的解释器中做类似的事情,但运气不佳......即使使用了一些更复杂的代码。给我一秒钟:)
    • 试试这样的可能@PlatinumTheHitgirl? stackoverflow.com/questions/35768165/…
    • 我试过了,但是没用。我想我得换壳了。无论如何,感谢您的帮助!
    • 祝你好运!我也尝试了很多东西并最终切换了,这样做会更好,因为大多数程序最终都在终端或 bash 上运行 @PlatinumTheHitgirl
    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2014-07-28
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多