学习笔记_文档读写
来源:互联网 发布:阿里云服务器免费试用 编辑:程序博客网 时间:2024/05/16 09:29
学习笔记_文档读写
学习日期:2016年9月29日
学习课程:文档读写 - 廖雪峰的官方网站
- 在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
读文件
- 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符(标识符
r
表示读取文本文件):
>>> f = open('/Users/michael/test.txt', 'r')
如果文件不存在,
open()
函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在。如果文件打开成功,接下来,调用
read()
方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str
对象表示。最后一步是调用
close()
方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。由于文件读写时都有可能产生
IOError
,一旦出错,后面的文件名.close()
就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally
来实现。with
语句和try ... finally
是一样的,但是代码更佳简洁,并且不必调用f.close()
方法。read(size)
方法,可以让python程序每次最多读取size个字节的内容;文件名.readline()
可以每次读取一行内容;调用文件名.readlines()
一次读取所有内容并按行返回list。
file-like Object
- 像
open()
函数返回的这种有个read()
方法的对象,在Python中统称为file-like Object
。除了file外,还可以是内存的字节流,网络流,自定义流等等。file-like Object
不要求从特定类继承,只要写个read()
方法就行。
二进制文件
- 要读取二进制文件,比如图片、视频等等,用
'rb'
模式打开文件即可。
字符编码
- 要读取非UTF-8编码的文本文件,需要给
open()
函数传入encoding
参数,例如,读取GBK编码的文件:
>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')>>> f.read()'测试'
- 遇到有些编码不规范的文件,你可能会遇到
UnicodeDecodeError
,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()
函数还接收一个errors
参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
写文件
- 写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件。
- 你可以反复调用
write()
来写入文件,但是务必要调用f.close()
来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()
方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()
的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with
语句来得保险。
with open('/Users/michael/test.txt', 'w') as f: f.write('Hello, world!')
- 要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。
0 0
- 学习笔记_文档读写
- 学习笔记_文档测试
- Android学习笔记 day02 _ 测试 & 文件读写操作
- java学习笔记_将中文字符导出txt文档_从txt文档读取文件
- 韩顺平_php从入门到精通_视频教程_学习笔记_源代码图解_PPT文档整理_目录
- 韩顺平_php从入门到精通_视频教程_学习笔记_源代码图解_PPT文档整理_目录
- 韩顺平_php从入门到精通_视频教程_学习笔记_源代码图解_PPT文档整理_目录
- 韩顺平_php从入门到精通_视频教程_第12讲_通配符选择器_父子选择器_学习笔记_源代码图解_PPT文档整理
- 韩顺平_php从入门到精通_视频教程_第19讲_网站推荐_定位_学习笔记_源代码图解_PPT文档整理
- 韩顺平_PHP程序员玩转算法公开课_学习笔记_源代码图解_PPT文档整理_目录
- 文件读写学习笔记
- 文件读写学习笔记
- 学习笔记---文件读写
- Hibernate学习文档_继承
- android学习_文档记录
- 韩顺平_php从入门到精通_视频教程_第0讲_开山篇_学习笔记_源代码图解_PPT文档整理
- 韩顺平_php从入门到精通_视频教程_第7讲_表单及表单控件②_学习笔记_源代码图解_PPT文档整理
- 韩顺平_php从入门到精通_视频教程_第18讲_浮动_学习笔记_源代码图解_PPT文档整理
- 9.29 集合set与映射map 之map
- 即时通讯相关资源汇总
- 学习笔记_错误、调试和测试
- 规范git的提交信息
- Draw Call是什么,怎么降低?
- 学习笔记_文档读写
- 学习笔记_StringIO和BytesIO
- 学习笔记_操作文件和目录
- Linux_Linux命令行提示符配置
- 求素数的两种方法
- Git(Android Studio)项目提交更新到github详细步骤及可能遇到问题
- webpack构建react项目和处理组件的依赖
- 文章标题
- Android 再按一次退出程序三种办法