Python小记--二进制方式文件读写实践
来源:互联网 发布:淘宝能买到a碟吗 编辑:程序博客网 时间:2024/06/06 02:20
二进制文件读写探究
昨天的文件读写简洁方案使用了with语法代替try…except….finally进行文本文件读写,今天补充一下读写二进制文件内容。
其实所有文件都可以当做二进制文件来处理,至于为什么会有文本文件和二进制文件的说法,个人认为是为了进行逻辑上的区分吧~这个今天先不去探究。
我选取了两种文件类型,.docx和.jpg来进行测试:
.docx格式:
word其中包含了文字和图片,模仿昨天代码,复制一个docx文件如下:
with open('file/python.docx', 'rb') as f: with open('file/pythonCopy.docx', 'wb') as w: for line in f.readlines(): w.write(line.strip())print('done.')
经测试,控制台打印了”done.”,说明程序并没有报错并且成功执行完毕。
但是当我尝试打开pythonCopy.docx文件时,却报出以下错误:
随后我比较了一下两个文件的大小,发现都是一样的31kb,并且我想由于采用的二进制方式读取和写入,就不应该存在文件编码的问题。于是再次思考程序的执行过程:
- 读取文件,正常;
- 创建输出流,没有报错所以也应该是正常的;
- 写入新文件,文件大小一致,所以写入的数据应该是没错的,但是写入方式呢?不懂所以回头检查一遍!
于是发现了一个问题,我的写入语句如下:
w.write(line.strip())
猛然发现在这里我调用了strip()方法,这个方法作用是去除字符串首尾的空格,类似java中的trim()方法,问题很可能就出在这里!二进制数据被篡改导致文件损坏!
去掉一试,大功告成!
.jpg文件
要说二进制文件,图片和视频才是货真价实毫无争议的二进制文件,此处不应有大问题,代码如下:
with open('file/python.jpg', 'rb') as f: with open('file/pythonCopy.jpg', 'wb') as w: for line in f.readlines(): w.write(line)print('done.')
此次完美复制!
踏平一切坑!2017年8月15日20:39:43 于辉煌时代
阅读全文
0 0
- Python小记--二进制方式文件读写实践
- Python 读写文件---pickle 二进制方式读写
- c++ 二进制方式读写文件
- Python文件读写方式
- python 文件读写项目实践
- python二进制读写文件与普通文件
- Python小记--文件读写简洁方案
- vbscript脚本用二进制方式读写文件
- Python读写文件的方式
- 文本方式读写文件和以二进制方式
- 文件读写: 二进制方式和文本方式的区别
- 文件读写: 二进制方式和文本方式的区别
- 文件读写: 二进制方式和文本方式的区别
- 文件读写: 二进制方式和文本方式的区别
- 文件读写: 二进制方式和文本方式的区别
- 文件读写: 二进制方式和文本方式的区别
- python文件读写最佳实践(with)
- 文件读写方法小记
- SpringBoot安装和初体验(A)
- Java反射
- File类以及文件过滤器
- Online Object Tracking : A Benchmark 翻译
- chenw Hibernate 缓存机制
- Python小记--二进制方式文件读写实践
- Matlab编写乐曲
- soj2222_01背包变形
- 小白入门---CSS3新属性
- 机器学习实战笔记4
- 1015. 德才论 (25)
- BZOJ 3730 震波
- 【NOIP提高组模拟A组8.15】膜法师 (Standard IO)
- 学生管理系统总结