1、如何设置文件的缓冲

实际案例:

将文件内容写到硬件设备时,使用系统调用,这类I/O操作的时间很长。为了减少I/O操作的次数,文件通常使用缓冲区。(有足够多的数据才进行系统调用)文件的缓冲行为,分为全缓冲、行缓冲、无缓冲。

如何设置python中文件对象的缓冲行为?python文件对象默认的缓冲行为4个字节(4096)

解决方案:

全缓冲:open函数的buffering设置为大于1的整数n,n为缓冲区大小。

行缓冲:open函数的buffering设置为1 。

无缓冲:pen函数的buffering设置为0。

      注意:都是在python交互模式下进行的操作,如果是用脚本,脚本运行完关闭文件对象,缓冲区内容就会写到磁盘中,这样就观察不了缓冲区不同大小的行为了。

2、文件缓冲介绍?

对于磁盘这类的块设备,它的读写不是一个字节一个字节完成的,而是按块每次读写一个块,假设一个块的大小是4096个字节,那就意味着写入一个字节和写入4096个字节都需要一次I/O操作,它们的用时是相同的。在这种情况为了提高效率就要减少I/O操作的次数,使用的手段就是为文件设立一个缓冲区。当需要写入的字节数不足一个块设备大小的时候,那么都放入缓冲区当中,凑够一个块的大小才调用一次系统调用。

全缓冲就是缓冲区有一定大小满足那个数量就进行一次系统调用;

行缓冲就是碰到一个换行符就进行一次输出也就是一次系统调用;

无缓冲就是不希望有缓冲的实时写入到文件,如串口设备,需要及时的发送到串口上去。

3、代码演示

f = open('open.txt', 'wb')
'''
使用tail -f open.txt,实时查看文件内容,
python交互模式下,输入以下内容,查看写入4096个字节前后输出变化。
'''
f.write(b'abc')
f.write(b'+' * 4093)
f.write(b'-')
'''
普通文件默认的缓冲行为,缓冲区的大小4096,是根据平台和
块设备自身的属性相关。在某些情况下想改变缓冲区的大小应该怎么做?
通过open函数buffering参数设置缓冲大小。
'''
# 设置全缓冲区的大小为2048
f2 = open('demo2.txt', 'wb', buffering=2048)
f2.write(b'+' * 1024)
f2.write(b'+' * 1023)
f2.write(b'-' * 2)# 设置行缓冲,buffering为1
f3 = open('demo3.txt', 'wb', buffering=1)
f.write(b'abc')
f.write(b'123')
f.write(b'\n')# 无缓冲,buffering为0
f4 = open('demo4.txt', 'wb', buffering=0)
f4.write(b'a')
f4.write(b'1234')

Python使用open函数的buffering设置文件缓冲相关推荐

  1. 使用 fcntl 函数 获取,设置文件的状态标志

    前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢?本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1. ...

  2. Python应用——自定义函数:分割PDF文件函数

    案例 将一个 pdf 文件按要求分割为几个部分.比如说一个pdf有20页,分成5个pdf文件,每个pdf文件包含4页.设计函数实现? Python代码 from PyPDF2 import PdfFi ...

  3. python 设置精度_在python中以全微秒精度设置文件的mtime

    您已经设置了完整的微秒.微表示百万分之一: .248965是248965微秒. .248965866是248965866纳秒. 当然,它也是248965.866微秒,但是Python在每个平台上用来设 ...

  4. python内置函数中的 IO文件系列 open和os

    本篇介绍 IO 文件中的 open 和 os基础用法. 本次用一个游戏登陆 基础界面做引子,来介绍. 实现存储的话,方式是很多的. 比如 存到字典 和列表了,可是字典.列表是临时的,玩网页游戏一次还是 ...

  5. python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...

    我们知道,在使用Python打开一个文件时,一般使用的是open()函数,但是你真正了解这个函数么?文件打开后如何进行缓存?对于大文件它是如何处理的?今天,小编带你来详细了解一下-- Python如何 ...

  6. python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

    Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取.写入.追加等操作,默认情况下&q ...

  7. [技巧篇] 如何在不会的情况下解释 Python 设置文件的缓冲的问题

    本文字数:2096 字 阅读本文大概需要:6 分钟 美好的中秋,朋友圈在享受悠闲周末的时候,刚入门 Python 的程序员小R在公司埋头加班,不知时间几何,一不小心把下周的工作捯饬完了,心情愉悦,不能 ...

  8. python调用什么函数实现对文件内容的读取_Python 文件读取函数 read(), readline(), readlines()...

    Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作: read() 函数:逐个字节或者字符读取文件中的内容: readline() 函数:逐行读取文件中的内容: readl ...

  9. python代码编码成jni_python 设置文件编码格式的实现方法

    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码.(python3已经没有这个问题了,python3默认的文件编码是UTF-8 ...

最新文章

  1. mybatis传递多个参数_Mybatis传递多个参数的4种方式(干货)
  2. 如何通便清肠快速见效_如何三个月合理瘦身减脂
  3. 深入理解计算机的字长
  4. spark-sql createOrReplaceTempView 和createGlobalTempView区别
  5. Android 系统(112)---Android系统读取 CPU温度(MTK平台)
  6. PHP中判断变量为空的几种方法
  7. xampp的安装教程
  8. kernel日志时间转换函数
  9. java 引入本地dtd,java解析xml文件读取本地dtd或者忽略dtd
  10. 推流地址 java_如何通过代码生成推流地址和播放地址?
  11. 理财就是理生活 —— 小白理财训练营(上)
  12. 【Java面试题】SQL优化|Java面试题
  13. 鸟哥的Linux私房菜学习心得-基础操作
  14. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)
  15. 复杂社会网络传播模式研究项目申报书
  16. 撞库是什么意思?与洗库和拖库有什么关系?
  17. JavaScript基础(详细总结)
  18. LeetCode数据结构与算法学习Day03
  19. 基于javaweb最短路径公交查询系统设计与实现(论文下载)
  20. enet java 可靠udp,可靠的UDP编程(ENET库)

热门文章

  1. Thinkphp5使用redis消息队列
  2. MP + QueryWrapper + 自定义SQL完成连表查询
  3. 兄弟Brother DCP-8110D 驱动
  4. Android 创建桌面快捷方式的方法
  5. JUULUU kgb2b 龙猫B2B2c商城平台示例上线
  6. error Component name “xxx“ should always be multi-word vue/multi-word-comp
  7. java Tree1.1计算器
  8. Android获取手机系统软件图标,名称等
  9. 【2020】排队打饭(模拟)
  10. 微信小程序布局,小程序view之flex 布局