gpt4 book ai didi

python - 当向控制台写入回车时,整行都被删除了吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:05 25 4
gpt4 key购买 nike

我有一个 Python 程序,它广泛使用换行符来产生更新控制台行(特别是进度条)的效果。在尝试调试 PyCharm 中的代码时,我看到进度条在完成之前不会打印出来。

进一步检查后发现,当打印回车符 (\r) 时,整行都被删除了。因为库本身写入形式为 ({line}\r) 的字符串,所以我总是得到一个空行。

示例代码:

import sys
sys.stdout.write('xxx')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('\rZZ')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('yyy\r')
sys.stdout.flush()

time.sleep(1)

print ('===')

我的运行看起来像这样:

  1. xxx 被打印
    [1 秒后]
  2. ZZ 打印
    [1 秒后]
  3. 该行被删除
    [1 秒后]
  4. === 被打印,程序终止

运行此脚本时,在调试和运行控制台中都会发生这种情况。

最佳答案

答案实际上在您的帖子中。如您所说,回车会删除整行。为避免此问题,请仅在打印新行时打印回车符,如下所示:

打印每一行,开头有回车符,没有默认的 end='\n'。不需要冲洗,尽管我没有做太多测试。

print('\rxxx', end='')
# sys.stdout.flush()
time.sleep(1)

继续这样...

print('\rZZ', end='')
time.sleep(1)

print('\ryyy', end='')
time.sleep(1)

要保留最后的打印输出,请保留默认结尾。

print('\r===')

关于python - 当向控制台写入回车时,整行都被删除了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com