Python中open读写文件操作
Python内置了读写文件的函数open()
1.读文件(使用内置的open()函数)
f = open('/Users/michael/test.txt', 'r')
‘r’ 表示读,我可以可以利用这个方法打开一个文件,如果文件不存在,会抛出一个IOError的错误,并且给出错误码和详细信息告诉你文件不存在。如果文件打开成功,我们接下来就要读文件操作了
2.read()一次性 读取全部文件
read(size) 一次性读取指定大小内容,每次最多读取size个字节的内容
f.read()
'Hello, world!'
read函数可以一次性读取文件全部内容,如果文件内容不大的话,适合使用这个函数一次性读取全部内容
3.readline() 一次读一行
readlines() 一次读取所有内容并且按照行返回
f.next() 逐行读取数据,和f.readline() 相似,唯一不同的是,f.readline() 读取到最后如果没有数据会返回空,而f.next() 没读取到数据则会报错
for line in f.readlines():print(line.strip()) # 把末尾的'\n'删掉
4.close() 关闭文件
调用close()
方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
f.close()
5.try...finally 保证无论是否出错都正确关闭文件
try:f = open('/path/to/file', 'r')print(f.read())
finally:if f:f.close()
6.with 语句自动帮我们调用close() 方法
with open('/path/to/file', 'r') as f:print(f.read())
7.file-like Object
像open()
函数返回的这种有个read()
方法的对象,在Python中统称为file-like Object。除了file外,还可以是内存的字节流,网络流,自定义流等等。file-like Object不要求从特定类继承,只要写个read()
方法就行。
StringIO
就是在内存中创建的file-like Object,常用作临时缓冲。
8.读取二进制文件 ‘rb’
前面讲的默认都是读取文本文件,并且是UTF-8编码的文本文件。要读取二进制文件,比如图片、视频等等,用'rb'
模式打开文件即可:
>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
9. 字符编码
读取非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')
10,写文件
写文件和读文件是一样的,唯一区别是调用open()
函数时,传入标识符'w'
或者'wb'
表示写文本文件或写二进制文件:
>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()
可以反复调用write()
来写入文件,但是务必要调用f.close()
来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()
方法时,操作系统才保证把没有写入的数据全部写入磁盘。(f.flush() 将修改写入到文件中(无需关闭文件)),忘记调用close()
的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with
语句来得保险:
with open('/Users/michael/test.txt', 'w') as f:f.write('Hello, world!')
以'w'
模式写入文件时,如果文件已存在,会直接覆盖(相当于删掉后新写入一个文件)。如果我们希望追加到文件末尾怎么办?可以传入'a'
以追加(append)模式写入。
使用r+ 模式不会先清空,但是会替换掉原先的文件,如果在写之前先读取一下文件,再进行写入,则写入的数据会添加到文件末尾而不会替换掉原先的文件。这是因为指针引起的,r+ 模式的指针默认是在文件的开头,如果直接写入,则会覆盖源文件,通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。这里也可以使用a 模式
>>> f2 = open('/tmp/test.txt','r+')
>>> f2.read()
'hello girl!'
>>> f2.write('\nhello boy!')
>>> f2.close()
[root@node1 python]# cat /tmp/test.txt
hello girl!
hello boy!
f.writelines() 多行写入
>>> l = ['\nhello dear!','\nhello son!','\nhello baby!\n']
>>> f = open('/tmp/test.txt','a')
>>> f.writelines(l)
>>> f.close()
[root@node1 python]# cat /tmp/test.txt
hello girl!
hello boy!
hello man!
hello dear!
hello son!
hello baby!
Python中open读写文件操作相关推荐
- Python中的File(文件)操作
Python中的File(文件)操作 针对磁盘中的文件的读写.文件I/O I 输入(input) O输出(Output) 文件操作步骤:1.打开文件 2.读写文件 3.关闭文件 写入文件的操作:(把大 ...
- 详解Python中的File(文件)操作
目录 Python中的File(文件)操作 写入文件的操作: 读取文件的操作: 一.文件操作相关函数 1. open() 打开文件 2. seek() 设置文件指针的位置 3. write() 写入内 ...
- python怎么读取文件-Python中怎么读写文件
python中对文件的操作大概分为三步:打开文件.操作文件(读.写.追加写入).关闭文件. 1.无论对文件做哪种操作,操作前首先要保证文件被打开了,即需要一个打开的操作. 例:open(XXX.txt ...
- python怎么读-Python中怎么读写文件
python中对文件的操作大概分为三步:打开文件.操作文件(读.写.追加写入).关闭文件. 1.无论对文件做哪种操作,操作前首先要保证文件被打开了,即需要一个打开的操作. 例:open(XXX.txt ...
- python 创建目录_第二天:Python中目录及文件操作
Python创建目录 使用os模块 mkdir创建一级目录,但不会创建父级目录 #创建test目录,成功 import os os.mkdir('E:test')##若无父级目录python,则创建t ...
- python怎么读取文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- python怎么读写文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- python使用方法-在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
- python脚本怎么使用_在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
最新文章
- 素数筛选-hdu2710
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
- 关于BCT,你需要知道的是...
- 构建高性能ASP.NET站点 第七章 如何解决内存的问题(后篇)—托管资源优化—监常用优化措施...
- AIR:使用 HTML + Javascript 开发桌面应用
- 【网摘】ActiveX组件及其注册
- cygwin1.dll is missing from your computer
- 软件项目总结报告范文
- SQL Plus的使用详解(登录和常用命令)
- CDA的考试体系与人才能力模型
- 网络安全应急响应(归纳)
- 网络安全专栏——telnet远程登录数据包捕获个性化登录账号及密码(图文丰富 保姆级 有几种错误解决方案 为什么不用输入telnet密码就能登录 )
- 密室逃脱实体店怎么吸引客户?这几招教你实现线上引流转化!
- 最短路径算法,Dijkstra算法,floyd算法 07-图4 哈利·波特的考试 (25 分)
- 论文笔记: 多标签学习 PML-NI 算法
- 通过javascript获取sharepoint数据,使用JS导出Excel
- 精彩的“利益均衡”,尤其是“四”
- 【每日面试】2021北京联通Java一面
- 中国生物降解塑料行业市场运营态势及发展趋势研究报告2022~2028年
- Google Colaboratory中有多个py文件时的使用技巧
热门文章
- 西南名族大学计算机科学与技术学院,西南民族大学计算机科学与技术学院副院长雷开彬一行来我院调研...
- Android使用HttpURLConnection返回并解析JSON数据,以聚合数据API之星座配对为例
- 基于 MindQuantum 实现对含有自定义量子门且损失函数涉及多个哈密顿量的量子线路的训练
- 2.自动推导、.PHONY
- 最全的 Linux 学习思维导图,建议收藏!
- 超分辨率重建之SRCNN整理总结
- STC 51单片机程序下载失败总结
- 关于电弧焊的一些基本常识
- 推荐系统-基于领域的协同过滤算法选择(一文足矣)
- [数据结构]堆的经典——TopK问题与堆排序