模块pickle(皮考)

dumps(当破死)序列化. 把对象转化成bytes

loads(楼死) 反序列化. 吧bytes转化成对象

dic = {"jay": "周杰伦", "jj": "大阳哥"}
bs = pickle.dumps(dic) #序列化
print(bs) d = pickle.loads(bs)#反序列化
print(d)

dump(当破)序列化,吧对象转化成bytes 并且写入文件

load(楼的) 反序列化,吧文件中的bytes读取,转化成对象

class Cat:
def __init__(self, name, age):
self.name = name
self.age = age def catchMouse(self):
print(self.name, self.age, "抓老鼠")
lst = [Cat("猫1", 10), Cat("猫2", 9), Cat("猫3", 9), Cat("猫4", 9), Cat("猫5", 9)] f = open("pickle-test", mode="wb")
pickle.dump(lst, f)
# for el in lst:
# pickle.dump(el, f) f.flush()
f.close() f = open("pickle-test", mode="rb")
while 1:
try:
c1 = pickle.load(f)
c1.catchMouse()
except EOFError:
break

  

shilve(晒要付)  用open

小型数据库. 操纵的是文件类型的字典. 像操作字典一样操作文件

shelve.open(文件, writeback=True)(Ruai特百科)操作的东西写回原来的文件

import shelve
f = shelve.open('大杰哥',writeback=True)#创建文件
f["jay"] = {'name': "周杰伦", 'age': 38, "hobby": "吃喝拉撒睡"}#像字典一样操作文件写入
f['jay']['name'] = '胡辣汤'#像字典一样修改
print(f['jay']['name'])
print(f['jay'])
f.close()#关闭哦

  

json(杰森)
前后端数据交互的通用的数据格式

dumps() 字典转换成字符串

loads() 吧字符转化成字典

import json  #引入模块
dic = {'a':'哈哈哈','b':'嘻嘻嘻','c':'嘿嘿嘿'}
s = json.dumps(dic)#如果你的key或者value超出了ascii范畴。 就会显示成\uxxxxx
#所以用一下写法:
s1 = json.dumps(dic,ensure_ascii=False)#干掉ascii码
print(repr(s1),type(s1))#字符串,可以用repr()来看 dic1 = json.loads(s)#把字符串解析成 字典
print(dic1,type(dic1))

 写入文件,

'''
写入的时候
1. 循环
2. 用dumps吧字典转化成字符串
然后手工在后面加入一个\n
3. 写出
'''
import json
f = open('wenjian_json',mode='w',encoding='UTF-8')
lst = [{'a':"胡辣汤"},{'b':'滋滋冒油的大猪蹄子'},{'c':'盖浇饭'},{'d':'法国大蜗牛'}]
for el in lst:
s = json.dumps(el,ensure_ascii=False)+'\n'
f.write(s)
f.flush()
f.close()
'''
读取的时候
1. for line in f:
2. strip()去掉空格
3. loads()变成字典
'''
f = open('wenjian_json',mode='r',encoding='UTF-8')
for line in f:
line = line.strip()
dic = json.loads(line)
print(dic)

configparser  (肯分哥怕色儿)

处理配置文件的

把配置文件作为一个大字典来处理就行了

写入

import configparser
conf = configparser.ConfigParser()
conf['DEFAULT'] = {
'session-time-out':30,
'user-alive':60,
'connect-alive':10
} conf['201-DB'] = {
'ip':'192.168.16.201',
'port':3306,
'name':'alex',
'password':'123'
} conf['202-DB'] = {
'ip':'192.168.16.202',
'port':3306,
'name':'alex',
'password':'123'
}
conf['203-DB'] = {
'ip':'192.168.16.203',
'port':3306,
'name':'alex',
'password':'123'
}
f = open('db.ini',mode='w')#创建文件写进入
conf.write(f)# 就这么玩,把文件扔进去,写到这个文件里

 增删改查:

conf = configparser.ConfigParser()
conf.read('db.ini')#读取出来
#修改:
conf['201-DB']['id'] = 'alex'#这只是内存上的改,
conf.write(open('db.ini',mode='w'))#把在内存里的放入文件 #删除
del conf['201-DB']['id']
conf.write(open('db.ini',mode='w')) #新增
conf.set('201-DB','id','192.168.199')
conf.write(open('db.ini',mode='w'))

序列化 pickle shelve json configparser的更多相关文章

  1. python 序列化 pickle shelve json configparser

    1. 什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称 ...

  2. Python 常用模块(2) 序列化(pickle,shelve,json,configpaser)

    主要内容: 一. 序列化概述 二. pickle模块 三. shelve模块 四. json模块(重点!) 五. configpaser模块 一. 序列化概述1. 序列化: 将字典,列表等内容转换成一 ...

  3. 各类模块的粗略总结(time,re,os,sys,序列化,pickle,shelve.#!json )

    ***collections 扩展数据类型*** ***re 正则相关操作 正则 匹配字符串*** ***time 时间相关 三种格式:时间戳,格式化时间(字符串),时间元组(结构化时间).***`` ...

  4. python笔记-7(shutil/json/pickle/shelve/xml/configparser/hashlib模块)

    一.shutil模块--高级的文件.文件夹.压缩包处理模块 1.通过句柄复制内容 shutil.copyfileobj(f1,f2)对文件的复制(通过句柄fdst/fsrc复制文件内容) 源码: Le ...

  5. json/pickle/shelve/xml/configparser/hashlib/subprocess - 总结

    序列化:序列化指把内存里的数据类型转成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes为什么要序列化:可以直接把内存数据(eg:10个列表,3个嵌套字典)存到硬盘 ...

  6. 模块 - json/pickle/shelve/xml/configparser

    序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...

  7. Python序列化-pickle和json模块

    Python的“file-like object“就是一种鸭子类型.对真正的文件对象,它有一个read()方法,返回其内容.但是,许多对象,只要有read()方法,都被视为“file-like obj ...

  8. 序列化与反序列化,json,pickle,xml,shelve,configparser模块

    序列化与反序列化 什么是序列化?序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输.反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构. 为什么要有? 1.可以 ...

  9. 模块简介:(random)(xml,json,pickle,shelve)(time,datetime)(os,sys)(shutil)(pyYamal,configparser)(hashlib)

    Random模块: #!/usr/bin/env python #_*_encoding: utf-8_*_ import random print (random.random()) #0.6445 ...

随机推荐

  1. 【搜索】C - Catch That Cow

    #include<stdio.h> #include<string.h> struct A{ int state; int step; }queue[]; // 结构体数组用来 ...

  2. maven打包证(支付)书问题

    要将证书文件后缀添加到resource文件夹内范围,添加打包文件后缀(include) 添加maven配置: <resources> <resource> <direct ...

  3. keybd_event使用方法

    Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作.Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM ...

  4. 技术课堂】如何管理MongoDB数据库?

  5. GO介绍,环境的配置和安装 简单使用

    1. 介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gol ...

  6. linux 安装 ORACLE JDK 8

    1.卸载默认的OPENJDK 查看 open jdk 的安装 rpm -qa | grep java 卸载 openjdk rpm -e --nodeps java-1.7.0-openjdk-1.7 ...

  7. react添加方法的两种形式

    1.使用bind <button onClick={this.test.bind(this)}>确定</button> 2.使用箭头函数 <button onClick= ...

  8. Le Chapitre I

    Lorsque j'avais six ans j'ai vu, une fois, une magnifique image, dans un livre sur la Forêt[fɔrε] Vi ...

  9. *单链表[递归&不带头结点]

    不带头结点的单链表,递归法比较简明!(必背!) 单链表的结构: typedef struct node{ int data; struct node *next; }*List,Node; 创建第一种 ...

  10. android-基础编程-TextView

    TextView是简单而又复杂的控件,简单是使用上,复杂是源代码研究.基础编程这里只讲是如何使用. TextView主要分为两种使用方法,一种是xml中不带span的textview,另外一种是Spa ...