1. sys.stdout用法示例

当我们使用print往控制台输出东西时,就相当于我们把东西塞进sys.stdout管道里面

import  os
import sys

print('heyyy')   #命令行打印

temp = sys.stdout  #暂存,用于恢复

f = open('test.txt','w')
sys.stdout = f    #输出重定向
print('hello')    #输出到test.txt文件里

sys.stdout = temp   #输出恢复到命令行
print('恢复')     #命令行打印

f.close()
2. sys.stdout和print的关系

在python中调用print时,事实上调用了sys.stdout.write(obj+‘\n’)

3. sys.stdout.write和sys.stdout.flush的关系

sys.stdout.write是先将内容写入到缓存中,待到缓存满了或者缓存刷新时再输出到控制台中。
由于缓冲,字符串可能实际上没有出现在该文件中,直到调用flush()或close()方法被调用.

  • flush()方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区。
    正常情况下缓冲区满时,操作系统会自动将缓冲数据写入到文件中。
  • 至于close方法,原理是内部先调用flush方法来刷新缓冲区,再执行关闭操作,这样即使缓冲区数据未满也能保证数据的完整性。
  • 如果进程意外退出或正常退出时而未执行文件的close方法,缓冲区中的内容将会丢失。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐