序列化 pickle shelve json configparser
模块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的更多相关文章
- python 序列化 pickle shelve json configparser
1. 什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称 ...
- Python 常用模块(2) 序列化(pickle,shelve,json,configpaser)
主要内容: 一. 序列化概述 二. pickle模块 三. shelve模块 四. json模块(重点!) 五. configpaser模块 一. 序列化概述1. 序列化: 将字典,列表等内容转换成一 ...
- 各类模块的粗略总结(time,re,os,sys,序列化,pickle,shelve.#!json )
***collections 扩展数据类型*** ***re 正则相关操作 正则 匹配字符串*** ***time 时间相关 三种格式:时间戳,格式化时间(字符串),时间元组(结构化时间).***`` ...
- python笔记-7(shutil/json/pickle/shelve/xml/configparser/hashlib模块)
一.shutil模块--高级的文件.文件夹.压缩包处理模块 1.通过句柄复制内容 shutil.copyfileobj(f1,f2)对文件的复制(通过句柄fdst/fsrc复制文件内容) 源码: Le ...
- json/pickle/shelve/xml/configparser/hashlib/subprocess - 总结
序列化:序列化指把内存里的数据类型转成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes为什么要序列化:可以直接把内存数据(eg:10个列表,3个嵌套字典)存到硬盘 ...
- 模块 - json/pickle/shelve/xml/configparser
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...
- Python序列化-pickle和json模块
Python的“file-like object“就是一种鸭子类型.对真正的文件对象,它有一个read()方法,返回其内容.但是,许多对象,只要有read()方法,都被视为“file-like obj ...
- 序列化与反序列化,json,pickle,xml,shelve,configparser模块
序列化与反序列化 什么是序列化?序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输.反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构. 为什么要有? 1.可以 ...
- 模块简介:(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 ...
随机推荐
- 使用 IntelliTrace 调试应用程序
IntelliTrace 如何能够大幅改善您的日常开发活动,并提升您快速轻松诊断问题的能力,而不必重新启动应用程序和使用传统的“中断-单步执行-检查”技术进行调试.介绍了组织如何能够通过在测试过程中收 ...
- css固宽截取字符串
width:200px; white-space:nowrap; word-break:keep-all; overflow:hidden; text-overflow:ellipsis; 移动端支持 ...
- fmt标签如何计算两个日期之间相隔的天数
<h2>start -- ${start}</h2><h2>end -- ${end}</h2><fmt:formatDate var=" ...
- Win7 VS2013环境使用cuda_7.5.18
首先得吐槽下VS2015出来快一年了CUDA居然还不支持,没办法重装系统刚从2013升到2015,还得再装回一个2013用,只为学习CUDA... 然后安装的时候,如果你选择自定义组件安装,注意不要改 ...
- TCP/IP协议(7):应用层
应用层上协议有DNS.DHCP.HTTP.SSL/TLS.FTP.Telnet等. 1.DNS域名解析 DNS服务器用来解析域名从而获得对应IP地址,我们在对网络进行设置的时候如果DNS服务器没有设置 ...
- LPCSTR与CString转换
1.LPCSTR是Win32和VC++所使用的一种字符串数据类型,L表示long,P表示指针,C表示常量,STR表示字符串. 2.LPCSTR转化为CString: LPCSTR lpStr=&qu ...
- C#——字符串
aaarticlea/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAA8CAMAAAA6wCQxAAAAGFBMVEX////w9f5kb9TGyu3b6P6hp
- 《深入浅出MFC》系列之动态创建
/*************************************************************************************************** ...
- codeblocks+SDCC开发51单片机
说到51,大部分人都是用的是KEIL开发环境,但是KEIL是商业软件,我们一般人都用的是破解版的,如果用于商业就会收到法律诉讼.然而有一款很好的编译器专为51内核而存在.SDCC最大的有点就是开源免费 ...
- Codeforces Round #540 (Div. 3)--1118B - Tanya and Candies(easy TL!)
Tanya has nn candies numbered from 11 to nn. The ii-th candy has the weight aiai. She plans to eat e ...