Python中sys.stdout.write和sys.stdout.flush的用法及说明
【代码】Python中sys.stdout.write和sys.stdout.flush的用法及说明。
·
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方法,缓冲区中的内容将会丢失。
更多推荐
已为社区贡献1条内容
所有评论(0)