python3-cookbook笔记:第五章 文件与IO
python3-cookbook中每个小节以问题、解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构、函数、类等特性在某类问题上如何更好地使用。这本书对于加深Python3的理解和提升Python编程能力的都有显著帮助,特别是对怎么提高Python程序的性能会有很好的帮助,如果有时间的话强烈建议看一下。 ? 5.1 读写文本数据 使用open打开文本文件时,Python会默认将换行符转换为n,如果不想Python进行默认的转换,可以使用参数newline=''以保留原来的换行符。 当使用默认的编码不能正确读取数据时,open还有一个encoding参数用来指定以哪种编码打开文件。 >>> f = open('hello.txt',rt') >>> f.read() hello world!n' >>> g = open('' g.read() hello world!rn' >>> ? ? 5.4 读写字节数据 使用open函数的rb或wb进行二进制的数据读写的时候,比如图片或音频数据,需要注意以下几点:
with open(somefile.binrb) as f: # 读取出来的是字节字符串 data = f.read() 解码为文本字符串 text = data.decode(utf-8) with open(wb 以字节对象的形式写入 f.write(bHello World) 编码后写入文件 text = f.write(text.encode(')) >>> t = hello world' >>> t[0] h' >>> for c in t: print(c) h e l l o w o r l d >>> b = b b[0] 104 >>> b: (c) 104 101 108 108 111 32 119 111 114 108 100 >>> ? ? 5.7 读写压缩文件 读写压缩文件还是比较常用的,Python对于gzip和bz2格式的压缩文件操作还是有很好的支持的,即gzip模块和bz2模块,这两个模块有和内置open函数一样的函数,包括参数的使用也是一样的,但是需要注意的是这两个模块默认是以二进制来打开的,所以你想要读写文本数据时就需要指定对应的rt和wt模式了。 在写入压缩数据时,这两个模块还有一个压缩比参数compresslevel,默认为最高级别9,等级越低性能越好,但是数据压缩程度也越低。 import gzip gzip和bz2的open函数使用方法一样,就只贴gzip的示例代码了 默认一个二进制模式打开,文本文件需要指定rt模式 with gzip.open(somefile.gz) as f: text = f.read() with gzip.open(wt) as f: f.write(text) ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |