模块(二)os hashlib

1.序列化模块

1.1 json 将满足条件的数据结构转化成特殊的字符串,并且可以反序列化转回去
# 两对方法
# 1 dumps() loads() ## 多用于网络传输
d = {"aa":1,"bb":2}
import json
s = json.dumps(d) ## 转储 为str
# 想转回去 用 loads()
d1 = json.loads(s) ## 反序列化
## 第二对方法 dump() load() 只能用作文件转储 而且只能写一行
d = {'aa':'噜啦啦',"bb":22}
with open('j1.json',encoding='utf-8',mode='w') as f1:
json.dump(d,f1,ensure_ascii=False) ## 参数显示中文
with open('j1.json',encoding='utf-8') as f2:
d2 = json.load(f2)
print(d2)
## json 转多条数据到文件中时
import json
dic1 = {'name':'oldboy1'}
dic2 = {'name':'oldboy2'}
dic3 = {'name':'oldboy3'}
l = [dic1,dic2,dic3]
with open('j2.json',encoding='utf-8',mode='a') as f1:
f1.write(json.dumps(l)) with open('j2.json',encoding='utf-8') as f2:
s2 = f2.read()
l2 = json.loads(s2)

1.2 pickle

只限于python内使用

dic1 = {'name':'oldboy1'}
dic2 = {'name':'oldboy2'}
dic3 = {'name':'oldboy3'}

f = open('pick多数据',mode='wb')
pickle.dump(dic1,f)
pickle.dump(dic2,f)
pickle.dump(dic3,f)
f.close()

f = open('pick多数据',mode='rb')
while True:
try:
print(pickle.load(f))
except EOFError:
break
f.close() ## 操作和json大致相同,只是默认转为bytes,所以文件操作的时候要用 二进制b 格式

2 os 操作系统交互

# 和路径相关
## 绝对路径
# t = os.path.abspath('t1.py')
# print(t) # 切割 成一个两项元组, 前面的所有路径+最后一个路径
# t = os.path.split(__file__)
# print(t) # ## 父级路径 split切割后的元组 索引 0
# t = os.path.dirname(os.path.abspath('t1.py'))
# print(t) ## __file__绝对路径
# print(__file__)
## 获取文件名 split切割后的元组 索引 1
# t = os.path.basename(__file__)
# print(t) # 判断路径是否存在
# t= os.path.exists('t1.py')
# print(t) ## 判断是否是绝对路径
# print(os.path.isabs(r'D:\_albert\fighting'))
# print(os.path.isabs(r'\fighting\day_09')) ## 判断是否是文件 或者是路径
print (os.path.isfile('t1.py'))
print(os.path.isdir('t1.py')) ## 拼接 路径
print(os.path.join('a','b')) ## 时间和大小
## os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 **
## os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 **
## os.path.getsize(path) 返回path的大小 ***
## 文件操作
## 获取当前路径下 所有子路径和文件
# os.listdir(path)
## 获取父路径
# print(os.getcwd()) ## 和文件夹相关
# 创建多级路径
# os.makedirs('d1/d2')
# 删除多级路径 有文件的路径不删
# os.removedirs('d1/d2') # 创建单级目录
# os.mkdir('d3') # 删除单独路径
# os.rmdir('d3')
# 重命名
# os.rename('d3','d4') # 删除文件
# os.remove('d4/t.txt')

3 sys 与解释器交互

sys.path() 返回一个列表 模块的搜索路径 可以把要导入的模块路径 加到这个列表中

4 hashlib 加密算法

##  正常加密
import hashlib
md = hashlib.md5() # 实例化对象 这里的md5 可以换别的方法
md.update(bytes) ## 加密
ret = md.hexdigest() ## 十六进制返回值
print(ret)
# 文件可以分批update
# 文件的一致性校验
md = hashlib.md5() ## md5(bytes) 加盐相当于再加密一些
with open(file,mode = 'rb') as f1:
while True:
content = f.read(1024)
if content:
md.update(content)
else:
break

最新文章

  1. Beta工作比例(Transcend)
  2. Apache配置
  3. MySQL5.7.13源代码阅读心得
  4. Node.js的核心与红利(zz)
  5. jquery单选框 复选框表格高亮 选中
  6. PHP获取上个月、下个月、本月的日期
  7. jquery动态插入行,不用拼写html,简洁版
  8. 【开源】封装HTML5的localstorage
  9. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
  10. 自己python程序的并行修改
  11. IIS总提示输入用户名和密码
  12. PB控制性能TreeView
  13. 条件变量signal与unlock的顺序
  14. 1.TCP/IP基本概念
  15. Linux第十节课学习笔记
  16. Educational Codeforces Round 60 Div. 2
  17. kotlin 插件更新到 1.2.41 程序出错 Please use kotlin-stdlib-jdk7 instead
  18. rosetta mpi error: protocols.jobdist.JobDistributors:(0)Master Node -- Waiting for job request:tag=1
  19. Tree(树链剖分+线段树延迟标记)
  20. facenet模型训练

热门文章

  1. hibernate关于多对多注解配置
  2. WPF 左键单击弹出菜单 ContextMenu
  3. Command 传参的几种方式
  4. .net core注入服务
  5. NoSQL Manager for MongoDB 4.6.0.3 带key
  6. jquery 复选框操作-prop()的使用
  7. Qt在Windows上的调试器CDB安装与配置
  8. SignalR的简单使用(二)
  9. DHTMLEdit控件的安装
  10. 主要C++流派,看看你是哪一流