关于python open函数缓冲区的问题
来源:互联网 发布:网络征婚成功率 编辑:程序博客网 时间:2024/05/17 04:36
open函数原型
open(name[, mode[, buffering]])
关于第三个参数buffering,文档中的解释是
The optional buffering argument specifies the file’s desired buffer size: 0 means unbuffered, 1 means line buffered, any other positive value means use a buffer of (approximately) that size. A negative buffering means to use the system default, which is usually line buffered for tty devices and fully buffered for other files. If omitted, the system default is used.
可以看到:
若buffering为0或False,没有缓冲区;
f = open(r’D:\code\py\opentest’, ‘w’, False),
f.write(‘望水至极’)
去opentest文件查看,字符串已被写入文件。若为1或True有缓冲区;
f = open(r’D:\code\py\opentest’, ‘w’, True)
f.write(‘望水至极’)
有缓冲区,不过文档时说“1 means line buffered”行缓冲?不理解什么意思,不过使用上感觉和使用默认缓冲区一样;
若缓冲区满了则自动写入文件opentest中,否则需要f.flush()或f.close(),才能写入opentest文件;若为其他正数则表示缓冲区大小;
f = open(r’D:\code\py\opentest’, ‘w’, 20)
有缓冲区,缓冲区大小20字节
当写入字符串少于20字节时,先写入缓冲区,需要flush或close(),才能写入opentest文件;
当字符串不少于20字节时,先写入缓冲区,若缓冲区满了,则自动写入opentest文件,依次类推,最后缓冲区中的内容需f.flush或f.close(),才能写入opentest文件;若为负数,则使用默认缓冲区大小;
f = open(r’D:\code\py\opentest’, ‘w’, -1)
f.write(‘望水至极’)
先写入缓冲区,若缓冲区满了则自动写入文件opentest中,否则需要f.flush()或f.close()才能写入文件
关于默认缓冲区大小究竟多大、行缓冲什么意思,本人暂时不知,希望了解的朋友可以指出,谢谢。
Thanks for your seeing!
- 关于python open函数缓冲区的问题
- 关于getchar函数缓冲区的问题
- 关于getchar函数缓冲区的问题
- 关于python的open函数的误区。
- gcc的 printf 和 缓冲区的问题(关于fflush 函数)
- Python的open函数
- 关于scanf()的缓冲区问题
- scanf函数的缓冲区问题
- 关于open函数,一个很容易出错的问题
- 关于缓冲区readLine函数的原理
- 关于缓冲区的函数:1、Flush:
- Shell执行python程序的缓冲区问题
- 【转】关于scanf()的缓冲区问题
- 关于缓冲区的问题, 大家讨论一下.
- 关于Console.ReadLine()与缓冲区的问题
- 关于fork和缓冲区的问题
- 输入输出时关于缓冲区的一点问题
- 关于window.open的问题
- ORACLE DataGuard 主备库角色切换
- ZCMU1543 Numbers
- Max Sum
- MySQL百万级数据库优化方案
- 关于Python的自定义模块
- 关于python open函数缓冲区的问题
- 莫比乌斯究竟爱谁!
- 15、Java并发面试题
- SSH远程LINUX时Connection refused
- ConcurrentLinkedQueue源码阅读
- 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter
- 关于博弈基础知识的总结:巴什博弈(Bash Game)、威佐夫博奕(Wythoff Game)、尼姆博奕(Nim Game)
- Android学习笔记之AndroidManifest.xml文件解析
- 数据结构—线性表(知识梳理)