with操作:
python中的with语句也可以用于访问文件,在语句块结束后会自动释放资源,相当于不用再写close了,推荐使用。
#f跟上篇作用一样,是用于接收的变量名
with open("text.txt","r") as f:
print(f.read())
操作基本上与上篇无异,非常的简单。
缓冲区:
- 系统自动的在内存中为每一个正在使用的文件开辟一个空间,在对文件读写时都是先将文件内容加载到缓冲区,再进行读写。
- 缓冲区是内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据。
- 1.减少和磁盘的交互次数,保护磁盘。
- 2.提高了对文件的读写效率
- 简单来讲,缓冲区就是用于提高执行效率、减少内存负担
对缓冲区的刷新:
- 缓冲区被写满,就会自动刷新输出
- 遇到换行符
- 程序执行结束或者文件对象被关闭
- 程序中调用flush()函数
文件对象.flush()
举个简单的例子:
怎么实现让01234,每隔一秒输出一个数字?
你可能想说:
import time
for i in range(5):
print(i, end= '')
time.sleep(1)
#结果是01234过了五秒同时被打印了出来
这就是因为缓存区没有刷新的关系,你要是默认换行符,他就会隔行一秒输出一个数字。但要是end=""没有了换行符,缓存区没有刷新就无法一秒一个数字去输出。
下面来看看正确做法:
import time
for i in range(5):
print(i, end= '')
time.sleep(1)
sys.stdout.flush()#强制刷新缓冲区
或者:
import time
import sys
for i in range(5):
print(i, end= '', flush = True)#添加一个flush的属性
time.sleep(1)
这种情况就可以实现一秒输出一个数字
在文件读写中也可以通过刷新缓冲区保护磁盘:
with open("text.txt","r") as f;
print(f.read())
f.flush()