python 之 序列化与反序列化、os模块
6.6 序列化与反序列化
特殊的字符串 , 只有:int / str / list / dict
最外层必须是列表或字典,如果包含字符串,必须是双引号"".
序列化:将Python的值转换为json格式的字符串.
反序列化:将json格式的字符串转换成Python的数据类型.
优点:所有语言通用
缺点:只能序列化基本的数据类型.
6.61 json.dumps
序列化:内存中的数据类型----》转成一种中间格式(字符串)----》存到文件中
import json
with open('db.json','wb') as f:
dic={'name':'egon','age':18}
res=json.dumps(dic) # json格式全都是双引号
print(res,type(res)) # {"name": "egon", "age": 18} <class 'str'>
f.write(res.encode('utf-8'))
6.62 json.loads
反序列化:文件----》读取中间格式(字符串)------》转成内存中数据类型
import json
with open('db.json','r',encoding='utf-8') as f:
data=f.read()
dic=json.loads(data)
print(dic,type(dic)) # {'name': 'egon', 'age': 18} <class 'dict'>
print(dic['name']) # egon
6.63 json.dump
import json
with open('db1.json','wt',encoding='utf-8') as f:
dic={'name':'egon','age':18}
json.dump(dic,f)
6.64 json.load
import json
with open('db1.json','rt',encoding='utf-8') as f:
dic=json.load(f)
print(dic['name']) # egon
6.65 pickle序列化
优点: Python中所有的东西都能被序列化(除socket对象)
缺点: 序列化的内容只有Python认识.
import pickle # pickle.dumps
s={1,2,3,4,}
res=pickle.dumps(s)
print(res,type(res)) # <class 'bytes'> ,转成bytes类型
with open('db.pkl','wb') as f:
f.write(res)
import pickle # pickle.dump
s={1,2,3}
with open('db1.pkl','wb') as f:
pickle.dump(s,f)
6.66 pickle反序列化
with open('db.pkl','rb') as f: # pickle.loads
data=f.read()
print(data)
s=pickle.loads(data)
print(s,type(s)) # {1, 2, 3, 4} <class 'set'>
with open('db1.pkl','rb') as f: #=pickle.load
s=pickle.load(f)
print(s,type(s)) # {1, 2, 3} <class 'set'>
6.7 os模块
os.path系列
os.path.abspath(path) 返回path规范化的绝对路径
import os
file_path=r'a\b\c\d.txt'
print(os.path.abspath(file_path)) #C:\Users\Desktop\a\b\c\d.txtos.path.split(path) 将path分割成目录和文件名二元组返回
res=os.path.split(r'C:\a\b\c\d.txt')
print(res) # ('C:\\a\\b\\c', 'd.txt')
print(res[-1]) # d.txt
print(res[0]) # C:\a\b\cos.path.isabs(path) 如果path是绝对路径,返回True
print(os.path.isabs(r'b/c/d.txt')) # False
os.path.normcase(path) 在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杠
print(os.path.normcase('C:/Windows\\system32\\') ) # c:\windows\system32\os.path.dirname(path) 返回path的目录 其实就是os.path.split(path)的第一个元素
import os
BASE_DIR=os.path.dirname(os.path.dirname(__file__)) #__file__当前文件地址
print(BASE_DIR) # os.path.dirname() 获取上一级地址路径os.path.normpath( ) 规范化路径,如 .. 和 /
print(os.path.normpath('c://windows\\System32\\../Temp/')) #'c:\\windows\\Temp'
a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..' #/Users/jieli/test1
print(os.path.normpath(a))os.path.join( path1 [ , path2 [ , ... ] ] ) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
print(os.path.join('C:\\','a','b','a.txt')) #C:\a\b\a.txt
print(os.path.join('C:\\','a','D:\\','b','a.txt')) #D:\b\a.txt 第一个c:\a被忽略
print(os.path.join('a','b','a.txt')) #a\b\a.txt
res=os.path.normpath(os.path.join(__file__,'..','..'))
print(res) #C:\Users\Desktop\day15\下午os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
print(os.path.basename(r'C:\a\b\c\d.txt')) # d.txt
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False, 只管路径是否存在,不区分文件还是文件夹
print(os.path.exists(r'D:\code\SH_fullstack_s1\day15\下午\json.py')) #True
print(os.path.exists(r'D:\code\SH_fullstack_s1\day15')) #Trueos.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
print(os.path.isfile(r'D:\code\SH_fullstack_s1\day15\下午')) #False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
print(os.path.isdir(r'D:\code\SH_fullstack_s1\day15\下午')) #True
os.path.getsize(path) 返回path的大小
res=os.path.getsize(r'D:\code\SH_fullstack_s1\day15\上午\settings.py') # 单位是字节
print(res)
6.71 os路径处理
方式一:推荐使用
import os
import os,sys
possible_topdir = os.path.normpath(os.path.join( os.path.abspath(__file__),
os.pardir, #上一级
os.pardir,
os.pardir
))
sys.path.insert(0,possible_topdir)
方式二:不推荐使用
import os
import os,sys
BASE_DIR=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.insert(0,BASE_DIR)
6.8 包的使用
python 之 序列化与反序列化、os模块的更多相关文章
- python json序列化与反序列化操作
python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...
- python的序列化和反序列化以及json
python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数 ...
- Python的路径操作(os模块与pathlib模块)
Python的路径操作(os模块与pathlib模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.os.path模块(Python 3.4版本之前推荐使用该模块) #!/u ...
- python:序列化与反序列化(json、pickle、shelve)
本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...
- python 的序列化和反序列化
什么是序列化?简单来说就是将数据存储到物理内存上的过程叫序列化. 什么是反序列化?将数据从物理内存存储到程序内存的过程叫做反序列化. 下面来看一下python中使用json进行序列化和反序列化的实例d ...
- python 中文件输入输出及os模块对文件系统的操作
整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...
- Python(七)之OS模块
文件系统功能:os模块 python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令: 目录: os.mkdir('/tmp/ ...
- Python Json序列化与反序列化
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...
- Python之文件操作:os模块
Python os 模块提供了一个统一的操作系统接口函数 一.对于系统的操作 1.os.name 当前使用平台 其中 ‘nt’ 是 windows,’posix’ 是linux 或者 unix 2.o ...
随机推荐
- Spring当中的名称装配和类型装配有什么区别?
6 人赞同了该回答 Spring auto-wire的 五种方式:1:no 默认的方式是不进行自动装配,通过手工设置ref 属性来进行装配bean2:byName 通过参数名 自动装配,如果一个bea ...
- 计算机中丢失OPENGL.dll
开发OpenGL项目时,在VS开发环境下可能会出现如图所示的错误. 在c:\windows\system32和SysWow64文件夹下存在opengl32.dll,此时,所写程序能够正常编译,但是,程 ...
- 如何识别真Microsoft服务与非Microsoft服务来定位病毒自己的服务
在我当网管的那段时间,发现有病毒入侵客户服务器,该病毒伪装自己的进程名,我们在服务中发现其也有伪装成系统服务的服务在运行,占用客户服务器的性能,使得CPU与内存的利用率达到90%以上,并持续时间长,甚 ...
- Python: scikit-image Blob detection
这个用例主要介绍利用三种算法对含有blob的图像进行检测,blob 或者叫斑点,就是在一幅图像上,暗背景上的亮区域,或者亮背景上的暗区域,都可以称为blob.主要利用blob与背景之间的对比度来进行检 ...
- kettle结合MySQL生成保留最近6个月月度报告_20161009
之前计算用户ID各月的金额(各月在列字段),用的是下面代码 ,b.金额,,b.金额,,b.金额,NULL)) AS 9月金额 FROM ( SELECT city AS 城市,DATE_FORMAT( ...
- 「LOJ#10042」「一本通 2.1 练习 8」收集雪花 (map
题目描述 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望 ...
- BZOJ2006:[NOI2010]超级钢琴
浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- 洛谷 1131 [ZJOI2007]时态同步——树形dp
题目:https://www.luogu.org/problemnew/show/P1131 因为越高,调节一个影响到的越多,所以底下只要把子树间的差异消除了就行了,与其他部分的差异由更高的边调节. ...
- Python 中的 classmethod 和 staticmethod 有什么具体用途?
作者:李保银链接:https://www.zhihu.com/question/20021164/answer/18224953来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- android自动连接指定wifi
public class WifiAutoConnectManager { private static final String TAG = WifiAutoConnectManager.class ...