模块三,json模块 pickle模块 , subprocess 子进程模块

1,json模块
Json模块提供了四个功能:dumps、dump、loads、load

序列化
序列:字符串
序列化:其他数据类型转换成字符串的过程

写入文件的数据必须是字符串
基于网络传输的数据必须是二进制

序列化:其他数据类型转成字符串的过程
反序列化:字符串转成其他数据类型

json模块(******)
所有的语言都支持json格式
支持的数据类型很少 字符串 列表 字典 整型 元组(转成列表) 布尔值


pickle模块(****)
只支持python
python所有的数据类型都支持


dumps:序列化 将其他数据类型转成json格式的字符串
loads:反序列化 将json格式的字符串转换成其他数据类型

json格式的字符串 必须是双引号 >>>: '{"name": "jason"}'

案列:
with open('userinfo','w',encoding='utf-8') as f:
json.dump(d,f) # 装字符串并自动写入文件
json.dump(d,f) # 装字符串并自动写入文件

with open('userinfo','r',encoding='utf-8') as f:
res1 = json.load(f) # 不能够多次反序列化
res2 = json.load(f)
print(res1,type(res1))
print(res2,type(res2))
pickle模块
用pickle操作文件的时候 文件的打开模式必须是b模式
pickle,用于python特有的类型 和 python的数据类型间进行转换
pickle模块提供了四个功能:dumps、dump(序列化,存)、
loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)
import pickle
d = {'name':'jason'}
res = pickle.dumps(d) # 将对象直接转成二进制
print(pickle.dumps(d))
res1 = pickle.loads(res)
print(res1,type(res1))
文件案列:
with open('userinfo_1','wb') as f:
pickle.dump(d,f)

with open('userinfo_1','rb') as f:
res = pickle.load(f)
print(res,type(res))
subprocess 子进程模块
1.用户通过网络连接上了你的这台电脑
2.用户输入相应的命令 基于网络发送给了你这台电脑上某个程序
3.获取用户命令 里面subprocess执行该用户命令
4.将执行结果再基于网络发送给用户
这样就实现 用户远程操作你这台电脑的操作
while True:
cmd = input('cmd>>>:').strip()
import subprocess
obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
# print(obj)
print('正确命令返回的结果stdout',obj.stdout.read().decode('gbk'))
print('错误命令返回的提示信息stderr',obj.stderr.read().decode('gbk'))
子进程 进程;一个正在运行中的程序
进程的进程,即由另一个进程开启的进程,a在运行过程中开启了b,b就是a的子进程
为什么要开启子进程:一个程序在运行过程中有一个任务自己做不了,或者不想做,就需要另一个进程来帮助其完成任务
可以理解为用于执行系统指令的模块
1,参数即指令 你的指令或者某个exe文件"
2,是否是一个指令
3,错误输出管道 stderr=subprocess.PIPE
4,输入管道 stdin=subprocess.PIPE
5,输出管道 stdout=subprocess.PIPE

猜你喜欢

转载自www.cnblogs.com/Fzhiyuan/p/11210559.html