Python文件处理VI——序列化,反序列化与ini文件处理

本文将介绍序列化与反序列化的有关知识,以及ini文件——初始化文件的处理。

一,简介

1,序列化

定义:将对象转为字节流

例如:机器学习模型转为字节流,保存到文件。

2,反序列化

定义:将字节流转为对象

例如:读取文件,将字节流转为机器学习模型。

3,ini文件
  • ini文件简介

.ini 文件是Initialization File的缩写,即初始化文件,被用于配置文件,例如:mysql等的配置文件

  • ini文件格式

ini文件由:节,键,值组成:

节
[section]
参数
(键=值)
name=value

以Mysql的配置文件为例:

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock 
nice = 0           
[mysqld]
user = mysql           
pid-file = /var/run/mysqld/mysqld.pid       
socket  = /var/run/mysqld/mysqld.sock         
port = 3306
  • 主要操作

借助configparser对ini文件进行读取,写入操作等。

二,Json

1,Json简介

json:一种轻量级的数据交换格式,文本序列化,具有一定的可读性;

主要作用:网络数据传输,数据存储,交换等

主要的运用场景:

  • 前端与后台请求数据格式
  • mysql中数据存储
  • 分布式爬虫中,将数据保存到redis等;

2,主要方法
方法说明
json.dumps(obj,…)  将对象转Json字符串,前提:obj对象支持该序列化方式
json.loads(s,…)将Json字符串转Python对象
json.dump(obj, fp,...)将对象以json格式写入文件 ,前提:obj对象支持该序列化方式
json.load(fp,…)将json文件数据转成Python对象

3,使用示例
  • 使用json进行序列化和反序列化
import json
info = {"小明":"湖南", "小红":"江西", "小凯":"上海","小丽":"新疆"}
#将python对象对转成json数据
json_data = json.dumps(info)
print(json_data)
#将Json数据转成python对象
data = json.loads(json_data)
print(data)

'''
Output:
{"\u5c0f\u660e": "\u6e56\u5357", "\u5c0f\u7ea2": "\u6c5f\u897f", "\u5c0f\u51ef": "\u4e0a\u6d77", "\u5c0f\u4e3d": "\u65b0\u7586"}
{'小明': '湖南', '小红': '江西', '小凯': '上海', '小丽': '新疆'}
'''

三,Pickle

pickle是Python中特有的,用于二进制序列化与反序列模块,序列化后不具有可读性。

1,主要方法
方法说明
pickle.dumps(obj,...)   将python对象序列化为字节流
pickle.loads(data,...)将字节流反序列化为Python对象
pickle.dump(obj, file, ...)将对象存以字节流方式保存到文件,file为文件对象,以“wb”方式打开
pickle.load(file,...)将文件字节流反序列化为Python对象,file为文件对象,以"rb"方式打开
2,使用示例
  • 序列化与反序列化
import pickle
info = {"小明":"湖南", "小红":"江西", "小凯":"上海","小丽":"新疆"}
pickle_data = pickle.dumps(info)
print(pickle_data)
data = pickle.loads(pickle_data)
print(data)
'''
Output:
b'\x80\x04\x95M\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x06\xe5\xb0\x8f\xe6\x98\x8e\x94\x8c\x06\xe6\xb9\x96\xe5\x8d\x97\x94\x8c\x06\xe5\xb0\x8f\xe7\xba\xa2\x94\x8c\x06\xe6\xb1\x9f\xe8\xa5\xbf\x94\x8c\x06\xe5\xb0\x8f\xe5\x87\xaf\x94\x8c\x06\xe4\xb8\x8a\xe6\xb5\xb7\x94\x8c\x06\xe5\xb0\x8f\xe4\xb8\xbd\x94\x8c\x06\xe6\x96\xb0\xe7\x96\x86\x94u.'
{'小明': '湖南', '小红': '江西', '小凯': '上海', '小丽': '新疆'}
'''

四,Configparser

1,导入模块
from configparser import Configparser
2,ini文件读取
  • 相关方法
方法说明
config = ConfigParser()    创建ConfigParser对象
config.read(fpath, encoding='utf-8')导入文件
config.sections()/items()获取所有的section名称/名称与section
config.values()返回每个section
config.keys()/config.values()获取所有的sections的key/section
config.has_section(section)是否包含section
config.has_option(section, option)section下是否包含option
config.get(section, option, *, raw=False…)获取section下key对应value

3,ini文件写入
  • 相关方法
方法说明
config.add_section(section) 添加session 
config.set(section, option, value=None)添加key-value 
config.write(fp, space_around_delimiters=True)写入文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值