os模块补充以及序列化模块
os模块补充以及序列化模块
一、os模块的补充
1.os.path.abspath 能把存在的相对路径的绝对路径显示出来
path = os.path.abspath("连达day19.py")
print(path)
#F:\pythonworkspace\day19\连达day19.py
2.os.path.split 把一个路径分成两段(以元组的形式展示),第二段是该路径的最后一个文件或者文件夹
path = os.path.split("F:\pythonworkspace\day19\连达day19.py")
print(path)
#('F:\\pythonworkspace\\day19', '连达day19.py')
3.os.path.dirname
os.path.basename
ret1 = os.path.dirname("F:\pythonworkspace\day19\连达day19.py")
ret2 = os.path.basename("F:\pythonworkspace\day19\连达day19.py")
print(ret1)
print(ret2)
# F:\pythonworkspace\day19
# 连达day19.py
4.os.path.exists 判断文件或者文件夹是否存在
ret = os.path.exists("F:\pythonworkspace\day19\连达day19.py")
print(ret)
ret = os.path.exists("F:\pythonworkspace\day19\连达da19.py")
print(ret)
# True
# False
5.os.path.isabs 判断是否为绝对路径
ret1 = os.path.isabs("F:\pythonworkspace\day19\连达da19.py")
ret2 = os.path.isabs("连达da19.py")
print(ret1)
print(ret2)
# True
# False
6.os.path.isdir os.path.isfile 判断是否为文件夹或者文件
ret1 = os.path.isdir("F:\pythonworkspace\day19")
ret2 = os.path.isfile("连达da19.py")
print(ret1)
print(ret2)
# True
# False
7.os.path.join 路径的拼接
path = os.path.join("F:\pythonworkspace\day19","连达da19.py") 拼接的可以是不存在的路径
print(path)
# F:\pythonworkspace\day19\连达da19.py
8.os.path.getsize 获取文件的大小,单位是字节(bytes)
size = os.path.getsize("F:\pythonworkspace\day19\连达day19.py")
print(size)
#1775
9.os.listdir 以列表的形式把当前路径下的所有文件或文件夹名称显示出来
ret = os.listdir("F:\pythonworkspace")
print(ret)
# ['.idea', 'day01', 'day02', 'day03', 'day04', 'day05', 'day06', 'day07', 'day08', 'day09', 'day10', 'day11', 'day13', 'day14', 'day15', 'day16', 'day17', 'day18', 'day19']
二、序列化模块
序列:列表、元组、字符串、bytes
序列化:字符串、bytes 把其他数据类型转换成字符串、bytes的过程叫序列化,反之成为反序列化
1.json模块:
json.dumps() #序列化
dic = {"k1":"v1","k2":"v2","k3":"v3"}
ret = json.dumps(dic)
print(ret,type(ret))
#{"k1": "v1", "k2": "v2", "k3": "v3"} <class 'str'>
json.loads() #反序列化
dic = {"k1":"v1","k2":"v2","k3":"v3"}
ret = json.dumps(dic)
ret = json.loads(ret)
print(ret,type(ret))
#{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'} <class 'dict'>
*1.当序列化过程中有int类型会转化成字符串类型,但是在反序列化过程中不会再转换成int类型

dic = {1 : 'value',2 : 'value2'}
ret = json.dumps(dic)
print(dic,type(dic))
print(ret,type(ret))
res = json.loads(ret)
print(res,type(res))
#{1: 'value', 2: 'value2'} <class 'dict'>
#{"1": "value", "2": "value2"} <class 'str'>
#{'1': 'value', '2': 'value2'} <class 'dict'>

*2.当序列化过程中元组会变成列表,但是反序列化不会变回元组

dic = {1 : [1,2,3],2 : (4,5,'aa')}
ret = json.dumps(dic)
print(dic,type(dic))
print(ret,type(ret))
res = json.loads(ret)
print(res,type(res))
#{1: [1, 2, 3], 2: (4, 5, 'aa')} <class 'dict'>
#{"1": [1, 2, 3], "2": [4, 5, "aa"]} <class 'str'>
#{'1': [1, 2, 3], '2': [4, 5, 'aa']} <class 'dict'>

*3.集合不能被序列化
s = {1,2,"aa"}
ret = json.dumps(s)
print(ret)
#报错
*4.字典序列化key不能是元组
***json能够处理的数据类型是非常有限的:字符串、列表、字典、int
字典中的key只能是字符串(如果是init就换成str)
序列化与文件的相关操作:
#将字典序列化之后写入文件
dic = {'key' : 'value','key2' : 'value2'}
ret = json.dumps(dic)
with open("json_file","w") as f:
f.write(ret)
f.close()

#将文件中的字符串读出来,然后反序列化变成字典
with open("json_file") as f:
str = f.read()
f.close()
ret = json.loads(str)
print(ret)
#{'key': 'value', 'key2': 'value2'}

dump和load 是直接操作文件的
dic = {'key1' : 'value1','key2' : 'value2'}
with open("json_file","a") as f:
json.dump(dic,f) #注意有两个参数,一个是要序列化的对象,第二个是文件的句柄
with open("json_file") as f: #该文件中只有一个字典才能读出来
dic = json.load(f)
print(dic)

实现了多次存取
dic = {'key1' : 'value1','key2' : 'value2'}
with open('json_file','a') as f:
str_dic = json.dumps(dic)
f.write(str_dic+'\n')
str_dic = json.dumps(dic)
f.write(str_dic + '\n')
str_dic = json.dumps(dic)
f.write(str_dic + '\n')
with open('json_file','r') as f:
for line in f:
dic = json.loads(line.strip())#*****
print(dic.keys())

data = {'username':['李华','二愣子'],'sex':'male','age':16} json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
字典的key 格式 #用来显示汉字
pickle模块
pickle模块的功能与用法与json基本一致
*支持python中几乎所有的数据类型
*序列化的结果只能是字节
*只能在python中使用
*在和文件操作的时候,要用“rb”,“wb”的模式
*可以多次dump和load

with open('pickle_file','rb') as f:
while True:
try:
ret = pickle.load(f)
print(ret,type(ret))
except EOFError:
break

os模块补充以及序列化模块的更多相关文章
- python day 8: re模块补充,导入模块,hashlib模块,字符串格式化,模块知识拾遗,requests模块初识
目录 python day 8 1. re模块补充 2. import模块导入 3. os模块 4. hashlib模块 5. 字符串格式:百分号法与format方法 6. 模块知识拾遗 7. req ...
- 模块二之序列化模块以及collections模块
模块二之序列化模块以及collections模块 一.序列化模块 json模块 ''' 序列化:将python或其他语言的数据类型转换成字符串类型 json模块: 是一个序列化模块. json: 是一 ...
- python之re模块补充和其他模块(collection、time、queue、datetime、random)
目录 re模块补充说明 collections模块 queue模块 time模块 datetime模块 random模块 re模块补充说明 在正则表达式中,'()'的作用是进行分组,但是在re模块中, ...
- Python之常用模块(re,时间,random,os,sys,序列化模块)(Day20)
一.时间模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 在Python中表示时间的三种方式:时间戳,元组(s ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- 常用模块---sys&logging&序列化模块(json&pickle)
sys 模块 sys.argv 命令行参数List,第一个元素是程序本身路径,通常用来避免io 阻塞 print('欢迎进入') info=sys.argv ': print('login succe ...
- re模块补充与其他模块介绍
注:昨日写了re单个模块几个重要的点需要补充 一.re模块补充 1.findall独有的优先级别展示 res = re.findall('abc', 'abcabcabcabc') print(res ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- os模块,序列化模块,json模块,pickle模块
一.os模块os.system("bash command") 运行shell命令,直接显示 os.popen("bash command).read() 运行shell ...
随机推荐
- Vue生命周期钩子---3
vue生命周期流程图:4张图 : 生命周期的解析和应用: Vue 实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom→渲染.更新→渲染.卸载等一系列过程,我们称这是 Vue ...
- c# WF 第1节 创建winform程序
本节内容: 1:vs的RAD 2:WinForm的创建简介 3:创建窗口与控制台程序文件的对比 4:窗口文件内容 5:winform怎么运行 6:winform的实质 1:vs的RAD 2:WinFo ...
- C++ class 中的 const 成员函数
const 修饰的成员函数 表示 不会修改class中的成员变量. const 和 非-const 的成员函数同事存在时, 用户定义 const 类对象,调用 const 成员函数: 定义 非-c ...
- ORM对象关系映射:
django配置orm: django使用mysql数据库: 首先cmd创建库 settings配置mysql数据库: DATABASES = { 'default': { 'ENGINE': 'dj ...
- luoguP2597 [ZJOI2012]灾难
题意 这题思路好奇怪啊 见到有向无环图显然是要拓朴排序,不妨按照被吃向吃连边,那么\(x\)灭绝当且仅当x的入点都灭绝,于是考虑怎样x的入点都灭绝 比如4号节点,它灭绝当且仅当2和3灭绝,2和3灭绝当 ...
- 实验1c语言的开发环境使用和数据类型,运算符,表达式
#include<stdio.h> int main() { printf("); ; } /*求两个整数的乘积*/ #include<stdio.h> int pr ...
- H5开发 连接蓝牙打印机 打印标签(斑马ZR628)
1.连接蓝牙打印机(先用手机自带蓝牙进行配对),然后绑定出已配对的蓝牙设备(用来选择/切换打印机之用),代码如下 已配对蓝牙设备,中显示的就是已连接的,点击一下即可 代码: <!DOCTYPE ...
- 弄明白kubernetes中的“三种IP”
Node IP : Node节点的IP地址 Pod IP:Pod的IP地址 Cluster IP : Service 的IP地址 首先,Node IP是Kubernetes集群中每个节点(服务器)物理 ...
- 动手学深度学习17-kaggle竞赛实践小项目房价预测
kaggle竞赛 获取和读取数据集 数据预处理 找出所有数值型的特征,然后标准化 处理离散值特征 转化为DNArray后续训练 训练模型 k折交叉验证 预测样本,并提交结果 kaggle竞赛 本节将动 ...
- Flink之state processor api实践
前不久,Flink社区发布了FLink 1.9版本,在其中包含了一个很重要的新特性,即state processor api,这个框架支持对checkpoint和savepoint进行操作,包括读取. ...