文件与IO

现在的操作系统不允许普通分程序直接进行磁盘操作,所以文件读写请求操作系统打开
一个文件对象,然后通过操作系统提供的接口对我们的文件进行读写操作
在Python中读写文件十分简单,我们可以使用Python内置的open()函数来打开文件对象
open(file,mode,encoding,errors=“ignore”)
参数一:文件路径
mode:模式,读取文件的时候使用"r",默认"r"
encoding:指定读取的编码格式
errors:对编码错误的处理默认是严格的,若使用"ignore"则可以忽略编码错误
功能:打开一个文件.并且获取到打开文件的对象.

f.read()
功能:一次性读取所有内容
f.read(size)
功能:一次性读取size字节[当文件比较大的时候建议使用此方法]
f.readline()
功能:一次性读取一行
f.readlines()
功能:一次性读取所有内容,以列表的方式返回,列表每个元素就是读取到每一行的数据
注意;当文件特别大的情况下,我们可以使用f.read(size),或者f.readline()
当读取配置文件的时候,建议使用f.readline()或者使用f.readlines()

f.close()
功能:关闭文件
注意:当文件读取完毕之后,一定要进行关闭,因为打开文件是占内存的,并且对于系统来讲
它一次性打开文件的个数也是有限的.

1.打开文件对象
open(file,mode,encoding)
参数一:文件路径[可以存在,也可以不存在(自己创建)]
参数二:模式[w/a]
参数三:encoding 编码格式
功能:返回一个打开文件的对象
当w模式的时候,覆盖写,若此文件已经存在,后面写的会将前面的文件进行覆盖,
若此文件不存在,则创建此文件.
当时用a模式的时候,追加写,若此文件已经存在,后面写的追加在原文件的后面,
若此文件不存在,则创建此文件.
f.write(str)
功能;将字符串写入到打开的文件中,注意写入必须是字符串
f.writelines(list)
参数:列表,并且列表中元素一定是字符串
功能:将列表中的元素写入到打开的文件中.
f.close()
功能:保证内容写入到文件中

with open(file,mode,encoding) as file_name:
# 文件操作
# 写入文件
# 读取文件
with语句块的作用:
当with下面的语句执行完毕之后,它会自动帮我们关闭此文件,无需我们手动close关闭


二进制文件的读取

当读取音频以及图片的时候,我们需要使用二进制文件的读写以及写入.
with open(file,mode) as f:
pass
file:文件路径
mode:rb 读取二进制文件
strb = f.read()
功能:一次性读取所有内容,以二进制的字符串返回.
strb = f.read(size)
功能:一次性读取size个字节
注意:一般情况下,使用f.read(size)居多

当读取音频以及图片的时候,我们需要使用二进制文件的读写以及写入.
with open(file,mode) as f:
pass
file:文件路径
mode:wb/ab 读取二进制文件
f.write(strb)


内存中读写
StringIO 在内存中读写字符串
from in inport StingIO # 调用模块
sio.write(str)
功能:将字符串写入sio对象中
sio.getvalue()
功能:获取写入的内容
sio2.read()
功能:一次性获取所用的sio对象中的内容

在内存中读取二进制的字符串
from io import BytesIO
bio = BytesIO()
bio.write()

将变量从内存变成可存储或者是可传输的这个过程,我们称之为序列化.
将变量的内容从序列化的对象中重新读入到内存的过程,我们称之为反序列化.

pickle模块可以将任意的对象序列化为二进制的字符串写入到文件中.
还可以从文件中读取并且转为写入时候的类型
pickle.dumps(obj)
功能:将obj序列化
pickle.dunp(obj,f)
参数一:被序列化的对象
参数二:打开的文件
功能:将obj序列化并且存入到打开的文件中
pickle.loads(bytes)
功能:将二进制的字符串转为对象
pickle,load(f)
功能:将文件中的内容读取并且转为对象

json模块
json模块提供的方法,可以直接将Python基本数据类型序列化为json字符串
也可以将json字符串转为Python的基本数据类型

json.dump(obj,default)
obj:被序列化的对象
default:函数,将对象转为字典的函数
功能:将对象序列化为json字符串

json.dump(obj,f,default)
obj:被序列化的对象
f:打开的文件对象
default:函数,将对象转为字典的函数
功能:将对象序列化为json字符串并且写入到打开的文件中

json.loads(s,object_hook)
参数一:字符串
参数二:将字典转为对象的函数
功能:将字符串反序列化成对象

json.load(f,object_hook)
参数一:打开的文件对象
参数二:将字典转为对象的函数
功能:将字符串反序列化成对象并且写入到打开的文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值