#第八部分 JSON模块
#8.1 JSON概念
#JSON(javascript object notation)是一种轻量级的数据交换格式,用于在不同应用程序之间传输和存储数据,它以文本形式表示结构化数据,易于理解和编写,同时也易于计算机解析和生成。
#JSON的结构
#对象:用{}包裹,包含一系列键值对,每个键值对之间用,分隔
#数组:用包裹,包含一系列值,每个值之间用,分隔
#键值对:键和值之间使用冒号:分隔,键必须是字符串,值可以是字符串,数字,布尔值,对象,数组或null
#json中的字符串,必须使用""包含
#8.2 Python与JSON数据类型对应:
#8.3 JSON序列化与反序列化
#JSON的序列化是指将Python对象转换为JSON格式的字符串
#8.3.1 json.dumps():将Python的数据结构转换为JSON格式的字符串,完成序列化的操作
import json
data = {
“code”:200,
“msg”:“success”,
“data”:[
{
“goods_id”:“g0001”,
“goods_name”:“iPhone13”,
“goods_price”:6999,
“isOpen”:True
},
{
“goods_id”: “g0002”,
“goods_name”: “iPhone14”,
“goods_price”: 7999,
“isOpen”: True
},
{
“goods_id”: “g0003”,
“goods_name”: “iPhone15”,
“goods_price”: 8999,
“isOpen”: True
}
]
}
json_str = json.dumps(data)
print(json_str)
with open(‘web_json.json’,‘w’) as file:
file.write(json_str)
运行结果为:
#8.3.2 json.loads():将JSON格式的字符串解码为Python对象
json_str = ‘{“code”: 200, “msg”: “success”, “data”: [{“goods_id”: “g0001”, “goods_name”: “iPhone13”, “goods_price”: 6999, “isOpen”: true}, {“goods_id”: “g0002”, “goods_name”: “iPhone14”, “goods_price”: 7999, “isOpen”: true}, {“goods_id”: “g0003”, “goods_name”: “iPhone15”, “goods_price”: 8999, “isOpen”: true}]}’
new_data = json.loads(json_str)
print(type(new_data))
print(new_data[“code”])
print(new_data[“msg”])
print(new_data[“data”][0][“goods_id”])
运行结果为:
#8.4 JSON文件的写入和读取
#8.4.1 json.dump():将Python对象序列化为JSON格式并写入文件中
with open(‘web_dump_data.json’,‘w’) as file:
json.dump(data,file)
#8.4.2 json.load():从文件中读取JSON格式的数据并解码为Python对象
with open(‘web_dump_data.json’,‘r’) as file:
json_file_content = json.load(file)
print(json_file_content)
运行结果为:
#第九部分 日志模块
#python中的日志模块logging是用于记录程序运行时的信息,帮助开发者诊断问题,跟踪应用程序的状态以及记录重要的事件
#9.1 日志四大组件
#logger:日志器,提供程序可使用的接口
#handler:处理器,用于写入日志文件并输出到指定位置,如文件、控制台或网络等
#fidler:过滤器,用于输出符合指定条件的日志记录
#formatter:格式器,决定日志记录的输出格式
#9.2 日志等级
#9.3 日志配置
#9.3.1 logging.basicConfig()函数 配置日志管理的函数
import logging
#设置日志输出格式
fmt = “%(asctime)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s”
#配置日志
logging.basicConfig(filename=“mylog.log”,filemode=“a”,format=fmt,level=logging.DEBUG)
#调用日志器触发日志信息
logging.debug(“hello, this is debug log”)
logging.info(“hello,this is info log”)
logging.warning(“hello,this is warning log”)
logging.error(“hello,this is error bug”)
logging.critical(“hello,this is critical log”)
运行结果:打开mylog.log,查看日志信息如下:
课堂小demo示例:
import logging
import random
from datetime import datetime
#设置日志输出格式
fmt = “%(asctime)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s”
filename = ‘mylog’+ datetime.now().strftime(“%Y%m%d%H%M%S”)+‘.log’
#配置日志
logging.basicConfig(filename=filename,filemode=“a”,format=fmt,level=logging.INFO)
def show():
logging.info(“show函数开始运行”)
print(“show() Run……”)
logging.info(“show函数运行结束”)
def display():
logging.warning(“display函数开始运行”)
print(“display() run……”)
logging.warning(“display函数运行结束”)
def get_data():
logging.info(“get_data函数开始执行”)
nums = list(x for x in range(random.randint(0,5)))
index = random.randint(0,9)
try:
result = nums[index]
except Exception as err:
logging.error(err)
return None
else:
return result
finally:
logging.info(“get_data函数运行结束”)
if name == ‘main’:
logging.debug(“程序开始运行……”)
funcs = [show,display,get_data]
for n in range(10):
func = random.choice(funcs)
func()
运行结果:
#第十部分 虚拟环境管理
#10.1 虚拟环境介绍
#虚拟环境是一个独立于系统全局环境的独立Python运行环境,用于隔离不同项目的依赖关系,可以使每个项目都拥有独立的包依赖,从而避免包之间的依赖
#10.2 虚拟环境安装
#venv使用方法
#第一步:创建虚拟环境:在Terminal中输入如下命令创建虚拟环境
Python3 -m venv myVenv
运行结果如下:
当前工作目录的文件下多了一个myVenv的文件,截图如下:
#第二步:激活虚拟环境:在Terminal中创建的虚拟环境文件夹下activate目录下执行如下命令
source myVenv/bin/activate #在macOS和Linux系统上执行该语句,windows系统上myVenv\Scripts\activate
运行结果如下:
#第三步:使用pip命令安装程序需要的安装包:在Terminal中使用pip命令安装对应的安装包
使用pip3 list查看已安装的包:
pip install flask --#开始下载flask相关的包和插件
#第四步:退出虚拟环境:在Terminal中执行如下命令
deactivate
运行结果为:
#第五步:在pycharm中配置python解析器,配置完成后可以正常运行
点击OK之后,配置信息如下:
#第六步:当不需要使用虚拟环境时,直接删除工程下的文件夹即可。
#第十一部分 pip工具使用
#pip 是packages installer for python的简写,是python软件安装器,可用于安装管理第三方工具
pip常用工具命令:
插曲:在pycharm中输入 pip -V报错:command not found,排查问题过程如下:
升级之后,输入pip -V就OK了
解决问题参考的链接:Mac 和 Linux 错误 pip Command Not Found 的处理方法
#pip 升级包
pip install --upgrade pytest
#pip 卸载包
pip uninstall pytest
#pip 列出已安装的包
pip list
#升级pip
python3 -m pip install --upgrade pip #注意如果解析器用的是pytho3的版本,这里需要使用python3,不然会报错
#pip指定安装资源
pip install pytest -i 镜像资源
#指定版本安装
pip install pytest --version==6.2.0
图形界面管理软件包: