创建文件

  1. 使用open()函数创建文件,如:file=open(‘file_path’,’r’,encoding=’utf-8’)或with open(‘file_path’,’r’,encoding=’utf-8’) as file
  2. Mode

模式

描述

r

以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式.

rb

以二进制格式打开一个文件只用于只读, 文件指针将会放在文件的开头,这是默认模式,一般用于非文本文件如图片等。

r+

打开一个文件用于读写,文件指针将会放在文件的开头.

w

打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件,一般用于非文本文件如图片等.

w+

以二进制格式打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件,一般用于非文本文件如图片等.

读写文件操作

方法

描述

file.write() 

将字符串写入文件,返回的是写入的字符长度.

file.writelines() 

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符.

file.read([size]) 

从文件读取指定的字节数,如果未给定或为负则读取所有.

file.readline()

读取整行,包括 "\n" 字符.

file.readlines([size]) 

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区.

 

序列化与反序列化

为什么要序列化及如何序列化?

 

  1.持久保存状态

    在断电或重启程序之前将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行,这就是序列化。

  2.跨平台数据交互

    序列化之后,不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。 

  3.JSON(python 提供的序列化模块,通用其他语言)

    一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

    Json 模块提供了四个方法: dumps、dump、loads、load

    dumps和dump 序列化方法
    序列化成字符串:json.dumps(json_obj)
    序列化字符串到文件中:json.dump(json_obj, write_file)

      import json

       # 将json类型的对象与json类型的字符串相互转换

       dic = { 'a': 1, 'b': [1, 2, 3, 4, 5]}

       # 序列化: 将python的字典转化为字符串传递给其他语言或保存

       json_str = json.dumps(dic)

       print(json_str)

       with open('1', 'w', encoding='utf-8') as w:

       json.dump(dic, w)

       # 先将dic对象转化为字符串,再写入文件

    loads和load 反序列化方法
    反序列化成对象:json.loads(json_str)
    从文件读流中反序列化成对象:json.load(read_file)

      import json

      # 反序列化

      json_str = '''{"a": 1, "b": ['1', 2, 3, 4, 5]}'''

      new_dic = json.loads(json_str)

      print(new_dic, type(new_dic))

      with open('1', 'r', encoding='utf-8') as r:

      res = json.load(r)

      print(res)

  4.Pickle(python 提供的序列化模块,仅python语言识别)

    Pickle模块提供了四个方法: dumps、dump、loads、load

    dumps和dump 序列化方法
    序列化成字符串:pickle.dumps(json_obj)
    序列化字符串到文件中:pickle.dump(json_obj, write_file)

    loads和load 反序列化方法
    反序列化成对象:pickle.loads(json_str)
    从文件读流中反序列化成对象:pickle.load(read_file)

 

posted on 2019-08-07 17:55  *赤子之心*  阅读(60)  评论(0)    收藏  举报