4. 文件IO效率问题与解决技巧

本文探讨了提高文件IO效率的各种方法,包括正确读写文本和二进制文件,设置缓冲策略如全缓冲、行缓冲和无缓冲,利用内存映射文件,以及检查文件状态和使用临时文件。通过案例和解决方案,为优化文件操作提供了实用指南。
摘要由CSDN通过智能技术生成

一. 如何读写文本文件

实际案列

某文本文件编码格式(如UTF-8, GBK, BIG5), 
在python2和python3 中分别如何读取该文件?

原理

字符串的语义变化
python2            python3
--------------------------
str            ->  bytes 
unicode        ->  str   


- python2: 写入文件前对  unicode  编码, 读入文件后对 字节 进行解码

- python3: open函数指定't'的文本模式, encoding指定编码格式

读写代码

# python2  先encode编码,再写入,  读取后还要解码

s = u'我是python2'

type(s)
# 结果<type 'unicode>

f = open('a.txt', 'w')
f.write(s.encode('utf8'))
f.flush()       # 从内存中放入磁盘中   这里可以用f.close()


f = open('a.txt')
txt = f.read()   # '\xe6\x88.......   此时是字节
txt.decode('utf8')    # u'\xe6\x88.....   此时是unicode     可以print到 我是python2




# python3
s = '我是python3'
f = open('b.txt', 'wt', encoding='gbk')    # t可以不写  python3 默认文本模式打开
f.write(s)
f.flush()

f = open('b.txt', encoding='gbk')
txt = f.read()      # 直接读取
print(txt)      # 我是python3
print(type(txt))   # <class 'str'>  在python3 中即  unicode

二. 如何处理二进制文件

实际案例

wav  是一种音频文件的格式, 音频文件为二进制文件。
wav  文件由头部信息和音频采样数据构成。 前面为头部信息, 包括声道数, 采样频率, 编码位宽等等, 后面是音频采样数据


使用python, 分析一个 wav  文件头部信息, 处理音频数据。

解决方案

- open函数以二进制文件打开, 指定mode 参数为b
- 二进制数据可以用readinto, 读入到提前分配好的buffer中
- 解析二进制数据可以使用标准库中的struc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值