Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv

读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json, csv

  • 读写文件
    • 读文件:
    • 写文件
    • with语句块
  • 二进制文件
    • 二进制文件读取
    • 二进制文件写入
  • 字符编码
  • 内存中读写
    • StringIO
    • BytesIO
  • 序列化与反序列化
    • pickle模块
    • json模块
  • 读写csv文件

读写文件

读写文件就是请求操作系统打开一个文件对象(文件描述),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)

读文件:

  • 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()
    功能:关闭文件,
    注意:当文件读取完毕之后,一定要进行关闭,因为打开的文件是占内存的,并且对于系统来讲它一次性打开文件的个数也是有限制的。

写文件

  • open(file,mode,encoding)
    参数一:文件路径【可以存在,也可以不存在】
    参数二:模式【w/a】w:覆盖,a:追加
    参数三:encoding 编码格式
    功能:返回一个打开文件的对象
    当w模式的时候,覆盖写,若此文件已经存在,后面写的会将前面的文件进行覆盖,若此文件不存在,则创建此文件。
    当使用a模式的时候,追加写,若此文件已经存在,后面写的追加在原文件的后面,若此文件不存在,则创建文件。

  • f.write(str)
    功能:将字符串写入到打开的文件中,注意写入必须是字符串

  • f.writelines(list)
    参数:列表,并且列表中元素一定是字符串
    功能:将列表中的元素写入到打开的文件中。

  • f.close()
    功能:保证内容写入到文件中。(常规操作)

with语句块

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

with open("demo.txt","r") as f1:
	print(f1.read())

二进制文件

二进制文件读取

当读取音频视频以及图片的时候,我们需要使用二进制文件的读取以及写入。

with open(file,mode) as f:
	pass
  • file:文件路径
  • mode:rb 读取二进制文件
  • strb = f.read()
    功能:一次性读取所有内容,以二进制的字符串返回。
  • strb = f.read(size)
    功能:一次性读取size个字节
    注意:一般情况下,使用f.read(size)居多
    Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv_第1张图片

二进制文件写入

当读取音频视频以及图片的时候,我们需要使用二进制文件的读取以及写入。

with open(file,mode) as f:
	pass
  • file:文件路径
  • mode:wb/ab 读取二进制文件
  • f.write(strb)
    Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv_第2张图片

字符编码

常用:

  • UTF-8编码(国际通用编码)
  • GBK编码
  • ASCII (python2.x默认编码)

内存中读写

StringIO

  • StringIO在内存中读写字符串的。

      from io import StringIO
      
      sio = StringIO()
      
      # 在内存中写入字符串
      sio.write(str)
      功能:将字符串写入sio对象中。
    
      sio.getvalue()
      功能:获取写入的内容
    

BytesIO

  • 在内存中读取二进制的字符串

     from io import BytesIO
    
      bio = BytesIO()
      bio.write("中国".encode("utf-8"))
      print(bio.getvalue().decode("utf-8"))
    
     bio2 = BytesIO("中国红".encode("utf-8"))
     print(bio2.read().decode("utf-8"))
    

序列化与反序列化

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

pickle模块

pickle模块可以将任意的对象序列化成二进制的字符串写入到文件中。还可以从文件中读取并且转为写入时候类型。

  • pickle.dumps(obj)
    功能:将obj进行序列化

  • pickle.dump(obj,f)
    参数一:被序列化的对象
    参数二:打开的文件
    功能:将obj序列化并且存入到打开的文件中

  • pickle.loads(bytes)
    功能:将二进制的字符串转为对象

  • pickle.load(f)
    功能:将文件中的内容读取并且转为对象

json模块

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

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

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

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

  • json.load(f,object_hook)
    参数一:打开的文件对象
    参数二:将字典转为对象的函数
    功能:将打开的文件对象的内容读取并且反序列化成对象

Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv_第3张图片

读写csv文件

  • csv文件本身就是个纯文本文件,这种文件格式经常用来作为不同程序之间的数据交互的格式.
  • 就是我们常用的excel表
  • 特别注意cvs获取的是迭代器(只能使用一遍,一般要先遍历该迭代器转存为列表再使用)
    代码片段:
    读:
    Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv_第4张图片
    写:
    Python学习笔记【week03day4】读写文件,with语句块,二进制文件,字符编码,StringIO,BytesIO,序列化,Json,csv_第5张图片

你可能感兴趣的:(Python学习篇)