栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

「Python」文件的读写模式 文件的操作模式 文件操作方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

「Python」文件的读写模式 文件的操作模式 文件操作方法

「Python」文件的读写模式 文件的操作模式 文件操作方法
  • 文件的读写模式
    • 只读模式(r)
    • 只写模式(w)
    • 只追加模式(a)
      • 在a模式下增加新内容
  • 文件的操作模式
    • 文本模式(t)
    • 二进制模式(b)
      • 二进制模式实操
        • 图片文件的操作
        • 视频文件的操作
    • 文件操作方法

文件的读写模式
  • 只读模式 r(使用该模式打开文件只能读取其内容) open for reading (default)
  • 只写模式 w(使用该模式打开文件只能写入内容无法查看) open for writing, truncating the file first
  • 只追加模式 a(使用该模式打开文件默认在文件末尾追加新内容) open for writing, appending to the end of the file if it exists
  • 以下举例环境均在同一python文件路径下创建了a.txt b.txt
  • 并分为两种情况研究各个模式的情况:文件路径不存在、文件路径存在
只读模式(r)

当文件路径不存在,在r模式下直接报错
e.g

# 文件路径不存在
with open(r'c.txt', 'r', encoding='utf8') as f:
	pass #pass语法用于补全python语法 但不执行任何操作

执行后 报错

当文件路径存在,r模式会打开文件等待读取文件内容
e.g

# 文件路径存在:r模式会打开文件等待读取文件内容
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.read())

执行后显示a.txt 的内容

只写模式(w)

当文件路径不存在,在w模式会自动创建该文件
e.g

# 当文件路径不存在
with open(r'c.txt', 'w', encoding='utf8') as f:
	pass

执行后显示

当文件路径存在,w模式会清空该文件内容后等待填写新的内容
e.g

# 当文件路径存在
with open(r'a.txt', 'w', encoding='utf8') as f:
	pass

执行后,原a.txt的内容消失

只追加模式(a)

当文件路径不存在,a模式会自动创建该文件
e.g

# 当文件路径存在
with open(r'd.txt', 'a', encoding='utf8') as f:
	pass

执行后

当文件路径存在,a模式不会清空该文件内容并在文件末尾等待填写新内容
e.g

with open(r'b.txt', 'a', encoding='utf8') as f:
	pass

执行后,b.txt内容不变

在a模式下增加新内容
with open(r'b.txt', 'a', encoding='utf8') as f:
 	f.write('学不死就往死里学n')

运行两次后

n 换行符
文件的操作模式 文本模式(t)

文本模式是文件操作的默认模式(可省略t)
r >>>>> rt
w >>>>>wt
a >>>>>at

  1. 在文本模式下,只能操作文本文件
  2. t 模式下必须指定encoding参数 (如果不填写有可能因为不同系统的默认编码不同产生乱码)
  3. 该模式下的读写都以字符串为单位,其他数据类型不适用
    e.g
    (写)
with open(r'b.txt', 'a', encoding='utf8') as f:
	f.write(1234)

结果报错

(读)

with open(r'b.txt', 'r', encoding='utf8') as f:
		print(type(f.read()))

结果为


二进制模式(b)

在这个模式下 rb wb ab 都必须自己指定 不可以省略

  1. 因为计算机的本质就是二进制,所以在该模式下能操作所有类型的文件
  2. 因为encoding参数是用来指定编码的,而二进制已经是计算机的底层语言所以不需要指定encoding参数
  3. 读和写都是以bytes为单位
二进制模式实操 图片文件的操作
with open(r'XXX.png', 'rb') as f:	
	print(f.read())
视频文件的操作
with open(r'D:11221.mp4') as f
	print(f.read())
文件操作方法

read(): 一次性读取所有文件内容,读取完后光标会停留在文件末尾,若继续读取,则读取数据为空

with open(r'a.txt','r',encoding='utf8') as f:
data = f.read()

当文件较大时,不推荐一次性读取该文件
解决方法如下

for line in f:
	print(line) #文件对象支持for循环1,一次只读取一行

readline(): 一次性只读取一行内容

with open(r'a.txt','r',encoding='utf8') as f:
data = f.readline()
print(data)

readlines(): 按照行的方式读取所有的文件数据并按照行组织成列表的一个个数据值返回出来

with open(r'a.txt','r',encoding='utf8') as f:
data = f.readlines
print(data)

readable(): 判断当前文件是否可读

with open(r'a.txt','r',encoding='utf8') as f:
	print(f.readable()) # True

writable(): 判断当前文件是否可写

with open(r'a.txt','r',encoding='utf8') as f:
	print(f.writable()) # False

write() : 填写文件内容

with open(r'a.txt','w',encoding='utf8') as f:
	f.write('xxx')

writelines: 支持填写容器类型数据(内部可存储多个数据值的数据:列表,字典,元组,集合)

with open(r'a.txt','w',encoding='utf8') as f:
f,writelines(['Johnn, 'jojon, 'oscarn'])

flush() : 类似于主动按了ctrl+s(相当于将内存数据立刻转存到硬盘)

with open(r'a.txt','w',encoding='utf8') as f:
	f.flush() 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号