得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

Python 输出缓冲区

用 bat 的方式调用 Py 脚本,发现一个问题,输出没有及时显示在 cmd 中,因为输出的时候用了下面的方式

1
print('*', end='')

程序是如何将数据输出到终端的呢?事实上,print 的内部实现了标准的输出流,先将数据输出到缓冲区,再将缓冲区里的数据刷新到终端显示。

数据从缓冲区刷新到终端:

  • flush():手动将缓冲区的数据刷新到终端,但是不会清空缓冲区
  • 当缓冲区满时,自动刷新到终端,并清空缓冲区
  • 程序终止时,缓冲区数据自动刷新到终端,并清空缓冲区
  • write(‘\n’) :遇到 \n 时,将缓冲区里的数据刷新到终端,并清空缓冲区
  • write(‘\r’) :遇到 \r 时,清空缓冲区数据并清空终端信息

所以只需要在 Py 代码中加上下面这句,就可以实时输出了

1
sys.stdout.flush() # 将缓冲区里的数据刷新到终端,但是不会清空缓冲区

除此之外,本身 print 中加个参数也是可以实现同样效果

1
print('*', end='', flush=True)

be yourself, everyone else is already taken.