ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • Python笔记

    • 基础知识

      • 常见规范与运行方式
      • 变量与垃圾回收机制
      • 输入与格式化输出
      • 运算符
      • 流程控制语句
      • 浅拷贝和深拷贝
      • 常用数据类型与分类
      • 数据类型方法
      • 字符编码
      • 文件操作
      • 函数与参数
      • 命名空间与作用域
      • 闭包函数与装饰器
      • 迭代器与生成器
      • 三元表达式与生成式
      • 函数递归
      • 面向过程式和函数式编程
      • 模块与包
      • 程序设计目录参考
      • 常用内置模块或函数
      • 序列化和猴子补丁
        • 序列化
        • json模块
        • pickle模块
        • 猴子补丁
      • 日志模块-logging
    • 类与面向对象

    • 并发编程

    • Web编程

    • 模块笔记

    • 其他

  • C笔记

  • C++笔记

  • Arduino笔记

  • Dev
  • Python笔记
  • 基础知识
Hoshinozora
2023-02-15
目录

序列化和猴子补丁

# 序列化

# 介绍

  • 序列化指的是把内存中的数据类型,转换成一种特定格式的内容。
  • 反序列化即是将特定格式的内容,又转换成内存中的数据类型。

# 作用

  • 可将内存中的数据存储到硬盘中,可以是一种专用的格式。
  • 序列化后的数据可供其他语言使用,应当是一种通用的格式。

# 格式

  • json - 一种通用、能被所有语言识别的格式。
  • pickle - 只能被Python识别的格式。


# json模块

# 导入模块

  • import json
    • 或者下载导入第三方包的ujson也行。
  • 只能序列化通用的数据类型。
    • 如: 字符串、数值、数组、字典等。
  • json格式中没有单引号,且True和False都是小写。

# 序列化

  • json.dumps(data)
    • 将数据类型转化成json格式,返回字符串。
    • 例如: - json.dumps([1, 'a', True, False])
  • json.dump(data, file)
    • 将内存中的数据类型转化成json格式并保存到硬盘。
    • 例如:
data = [1, 'a', True, False]
with open('test.json','wt','encoding=utf-8') as f:
    json.dump(data, f)
1
2
3

# 反序列化

  • json.loads(json_str)
    • 将json格式文本转化成数据类型,返回对应的数据类型。
    • 例如:
jsonstr = '[1, "a", true, false]'
a = json.loads(jsonstr)
1
2
  • json.load(file)
    • 将硬盘中的json格式文件转化成内存中的数据类型。
    • 例如:
with open('test.json','rt','encoding=utf-8') as f:
    data = json.load(f)
1
2


# pickle模块

# 导入模块

  • import pickle
  • 以序列化Python中的所有数据类型,用法与json一致。
  • 如:字符串、数值、数组、字典、元组、集合等。

# 序列化

  • pickle.dumps()
  • pickle.dump()

# 反序列化

  • pickle.loads()
  • pickle.dump()


# 猴子补丁

# 介绍

  • 核心思想就是用自己的代码替换所用模块的代码,可以省去修改调用函数的工作。

# 方法

  • 要在第一次导入模块的位置打补丁
    • 这样即便调用的其他文件又调用了那个模块,由于后续的导入都是引用第一次导入的,所以就等于全部都改了
    • 如果不确定在哪个文件,就直接先在运行文件导入
      • 如: start.py
  • 将自己代码的函数对象,给模块的函数名
  • 例如
import json
json.dumps = my_dumps
1
2
#序列化#json#猴子补丁
常用内置模块或函数
日志模块-logging

← 常用内置模块或函数 日志模块-logging→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式