python-9-IO

30 篇文章 0 订阅
17 篇文章 0 订阅
IO
1、文件读写
1.1、读文件
  • 打开文件对象,可以用python内置的open()函数。f = open(地址, ‘r’),如果文件不存在,则返回一个IOError的错误。
  • 如果read入去成功,会把内容读到内存,用一个str对象表示。**最后一步调用close()方法关闭文件。**常用try…finally来实现。
  • 可以反复调用read(size)方法每次最多读取size个字节的内容。调用readline()可以每次读取一行内容。
1.2、二进制文件
  • 读取二进制文件可以使用 f = open(地址,‘rb’),如图片、视频等,可以用’rb’模式打开文件。
1.3、字节编码
  • 读取非utf-8编码的文件,需要给 f = open(地址, ‘r’, encoding=‘gbk’),对于编码不规范的文件,会返回UnicodeDecodeError,遇到这种情况,open()函数会接收一个errors参数,表示如果遇到编码错误后如何处理。可以忽略,在open函数里添加error=‘ignore’
1.4、写文件
  • 可以传入标识符’w’或者’wb’。f = open(地址,‘w’),f.write(书写内容),f.close()。
  • 为了怕忘记调用close(),可以直接使用with语句。with open(地址, ‘w’) as f: f.write(内容)。
2、StringIO和BytesIO
2.1、StringIO
  • 在内存中读写str。需要先创建一个StringIO,然后,像文件一样写入即可。getvalue()方法用于获得写入后的str。
  • 要读取一个StringIO,可以用一个str初始化StringIO,然后像文件一样读取。
2.2、BytesIO
  • 用于操作二进制数据,需要添加encode(格式)。
3、操作文件和目录
  • python内置的os模块可以直接调用操作系统提供的接口函数
import os 
os.name # 操作系统类型

如果是posix,则为linux、unix或mac os,如果是nt,则是windows。

  • 要获取系统的详细信息,可以调用uname()。此函数在windows上不提供。
3.1、环境变量
  • 环境变量全部存放在os.environ这个变量中,可以直接查看,也可以调用get(参数)方法查看具体参数
3.2、操作文件和目录
  • 操作文件和目录的函数一部分放到os中,一部分放到os.path模块中。
os.path.abspath('.') # 查看当前目录的绝对路径
os.path.join(根目录, 文件名) # 打印新目录
os.mkdir(路径) # 创建一个目录
os.rmdir(路径) # 删除一个目录

把两个路径合成一个时,不要直接拼字符串,而要用**os.path.join()**函数,这样可以正确处理不同操作系统的路径分隔符;在拆分路径时,不要拆字符串,通过os.path.split()函数拆为两部分。os.path.splitext(路径)可以得到文件扩展名。

  • 合并、拆分路径的函数并不要求目录和文件要真实存在,只对字符串进行操作。
  • 如果要做文件,还是要用os。重命名:os.rename(原名,目的名)。删除文件:os.remove(文件名)。赋值文件可以使用shutil提供的copyfile()函数。
4、序列化
  • 把变量从内存中编程可存储或传输的过程称之为序列化。序列化之后,就可以把序列化后的内容写入磁盘,或者作为传输参数。python提供了pickle模块实现序列化。
  • pickle.dumps(参数):序列化参数称为bytes。pickle.dumps(参数,file-like Object)。
  • 当要把对象从磁盘读入内存时,可以先把内容读到一个bytes,然后用pickle.loads(参数)方法反序列化出对象,注意要f.close关闭文件。
4.1、JSON

对应关系

  • 可以用python内置的json。loads()把json字符串反序列化,load()把从文件中读取的字符串反序列化。json.dumps(参数)是讲参数json序列化。
4.2、json进阶
  • class实例在用json.dumps序列化时会报错,class需要写一个专门的转换成dict的函数trans(),用json.dumps(s, default=trans())即可。也可以用lambda obj: obj.__dict__属性。可以添加ensure_ascii属性来设置返回的序列化中是否转化为ascii码。
  • 反序列化时,也需要写一个函数,json.loads(json_str, object_hook=dict2studeng)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值