json,pickle,configparser,hashlib,subprocess
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json,pickle,configparser,hashlib,subprocess相关的知识,希望对你有一定的参考价值。
json:
序列化:把内存的数据类型转换成一个特定的格式内容,这种格式可以存储或者传输给其他平台
内存中的数据 ----> 序列化 ----> 特定的格式(json,pickle)
内存中的数据 <---- 反序列化 <----特定的格式(json,pickle)
强调:
- 可用于存储,是一种专门的格式
- 可以跨平台数据交互,能被其他语言识别
json强调:识别不了set,tuple
- json格式的字符串要用双引号表示
- 兼容所有是语言通用的数据类型,不能识别某一语言的所独有的类型
import json
# 序列化
json_res=json.dumps([1,‘aaa‘,True,False])
# print(json_res,type(json_res)) # "[1, "aaa", true, false]"
# 反序列化
l=json.loads(json_res)
print(l,type(l))
import json
# 序列化的结果写入文件的复杂方法
json_res=json.dumps([1,‘aaa‘,True,False])
# print(json_res,type(json_res)) # "[1, "aaa", true, false]"
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
f.write(json_res)
# 将序列化的结果写入文件的简单方法
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
json.dump([1,‘aaa‘,True,False],f)
# 从文件读取json格式的字符串进行反序列化操作的复杂方法
with open(‘test.json‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
json_res=f.read()
l=json.loads(json_res)
print(l,type(l))
# 从文件读取json格式的字符串进行反序列化操作的简单方法
with open(‘test.json‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
l=json.load(f)
print(l,type(l))
pickle:
import pickle
res=pickle.dumps({1,2,3,4,5})
print(res,type(res)) #得到一个二进制
s=pickle.loads(res)
print(s,type(s)) # 返回一个set
configparser:
import configparser
config=configparser.ConfigParser()
config.read(‘test.ini‘)
# 1、获取sections
print(config.sections())
# 2、获取某一section下的所有options
print(config.options(‘section1‘))
# 3、获取items
print(config.items(‘section1‘))
# 4、获得section下的user
res=config.get(‘section1‘,‘user‘)
print(res,type(res))
# 5、获得section下的age
res=config.getint(‘section1‘,‘age‘)
print(res,type(res))
hashlib:
- hash的一类算法,该算法接受传入的内容,得到一串hash值
- hash值的特点:
- 只要传入的内容一样,得到的hash值也是一样的
- 不管传入的内容多大,只要hash算法不变,得到hash值的长度也是不变
- 不能由hash值反推传入的内容(用于密码密文传输与验证)
import hashlib
m=hashlib.md5()
m.update(‘hello‘.encode(‘utf-8‘))
m.update(‘world‘.encode(‘utf-8‘))
res=m.hexdigest() # ‘helloworld‘
print(res)
# 模拟撞库
cryptograph=‘aee949757a2e698417463d47acac93df‘
import hashlib
# 制作密码字段
passwds=[
‘alex3714‘,
‘alex1313‘,
‘alex94139413‘,
‘alex123456‘,
‘123456alex‘,
‘a123lex‘,
]
dic={}
for p in passwds:
res=hashlib.md5(p.encode(‘utf-8‘))
dic[p]=res.hexdigest()
# 模拟撞库得到密码
for k,v in dic.items():
if v == cryptograph:
print(‘撞库成功,明文密码是:%s‘ %k)
break
# 提升撞库的成本=>密码加盐
import hashlib
m=hashlib.md5()
m.update(‘天王‘.encode(‘utf-8‘))
m.update(‘alex3714‘.encode(‘utf-8‘))
m.update(‘盖地虎‘.encode(‘utf-8‘))
print(m.hexdigest())
subprocess:
import subprocess
obj = subprocess.Popen(‘tasklist‘, shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,)
print(obj)
res = obj.stdout.read()
print(res.decode(‘gbk‘))
err_res = obj.stderr.read()
print(err_res.decode(‘gbk‘))
以上是关于json,pickle,configparser,hashlib,subprocess的主要内容,如果未能解决你的问题,请参考以下文章
保存数据到文件的模块(configparser,json,pickle,shelve,xml)_python
什么是序列化, pickle, shelve(春节再整理), json, configparser(春节再整理)模块
第二十天,pickle json xml shelve configparser模块
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess
Python学习第十三天 time datetime random os sysshutil json pickle shelve xml configparser hashlib suprocess