python - python 中 time.sleep 的奇怪打印行为

标签 python sleep

<分区>

我试图通过在同一行上每秒打印一个点来创建类似进度的东西。像“钓鱼......”之类的东西。这是我使用的:

import time

print('Fishing', end='')
for i in range(5):
    time.sleep(1)
    print('.', end='')

但是它等待了 5 秒,然后立即打印了 Fishing.....。但是当我不使用 end='' 时,它每秒打印点,但像这样在不同的行上打印点

Fishing.
.
.
.
.

我的问题:

  1. 为什么 print 会这样?
  2. 如何每秒打印一个点,但在同一行上?

最佳答案

  1. 为什么 print 会这样?

这与 print 关系不大,而与您的终端关系更大。出于性能原因,文本只会在每次出现换行符时“刷新”,而不是一次一个字符。

  1. 如何每秒打印一个点,但在同一行上?

每次打印时手动“刷新”标准输出:

import time
import sys

print('Fishing', end='')
sys.stdout.flush()
for i in range(5):
    time.sleep(1)
    print('.', end='', flush=True)  # another way

如果你一直需要这个,你可以定义一个单独的冲洗打印函数:

from functools import partial
myprint = partial(print, end='', flush=True)
myprint('Fishing')
for i in range(5):
    time.sleep(1)
    myprint('.')

关于python - python 中 time.sleep 的奇怪打印行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777951/

相关文章:

python - 在 Windows 上命令行启动时出现 Anaconda unicode 错误

python - 如何使用 Python 通过 API v3 创建 Google 日历事件

multithreading - 在线程中获取 "waste time"最高效的 CPU 方式是什么?

python - 填写部分文本后如何点击自动完成?

python - 如何修复 Flask 中的 "The method is not allowed for the requested URL"

vbscript - 使用 CopyHere 写入文件而不使用 WScript.Sleep

javascript - sleep 没有在 async 函数中定义吗?

.net - 在.NET控制台应用程序中,防止Windows sleep /休眠

python - 如何通过 pyuno 在 LibreOffice calc 中提取当前选定的单元格范围?

linux - nasm 汇编 linux 计时器或 sleep