当前位置: 首页 > article >正文

Python个人学习笔记(17):模块(sys、picklejson)

五、sys模块

sys.exit():退出

while 1:
    print(123)
    sys.exit(0)
    # 程序退出,0是正常退出,1是非正常退出,记录在日志中

sys.version:得到当前解释器的运行环境
sys.platform:运行平台,win32=windows
代码:

print(sys.version)
print(sys.platform)

结果:

3.13.0 (tags/v3.13.0:60403a5, Oct  7 2024, 09:38:07) [MSC v.1941 64 bit (AMD64)]
win32

sys.path:Python用来搜索模块的,是内部的环境变量
Python在import模块的时候,解释器是根据sys.path中给出的路径进行查找的
不是固定的,是随动的,会根据运行的py文件进行动态变化
导入的模块的路径有可能是pycharm添加的,代码移动到linux中可能会出现运行不通畅的情况,需要把sys.path补全
代码:

print(sys.path)

结果:

['D:\\PycharmProjects\\樵夫老师Python零基础课程\\4_模块', 'D:\\PycharmProjects', 'D:\\Study Material\\PyCharm 2024.3.4\\plugins\\python-ce\\helpers\\pycharm_display', 'C:\\Users\\Lee\\PycharmProjects\\PythonProject2\\.venv\\Scripts\\python313.zip', 'D:\\Study Material\\Python 3.13.0(64bit)\\DLLs', 'D:\\Study Material\\Python 3.13.0(64bit)\\Lib', 'D:\\Study Material\\Python 3.13.0(64bit)', 'C:\\Users\\Lee\\PycharmProjects\\PythonProject2\\.venv', 'C:\\Users\\Lee\\PycharmProjects\\PythonProject2\\.venv\\Lib\\site-packages', 'D:\\Study Material\\PyCharm 2024.3.4\\plugins\\python-ce\\helpers\\pycharm_matplotlib_backend', 'D:\\Study Material\\PyCharm 2024.3.4\\plugins\\python-ce\\helpers\\pycharm_plotly_backend']

结果是sys.path的搜索范围
在导入某一个模块时,会自动找sys.path,如果模块不在以上的搜索范围内,那么程序会报错
sys.path.append(“路径”):引入额外的搜索路径,特殊情况下,需要手动增加,比如在linux上运行程序
sys.path = []:置空搜索范围

sys.argv:接收程序运行时的命令行参数

六、pickle&json

用于序列化

(一)pickle

把对象打散成字节进行存储,这一过程叫序列化
dumps():把对象处理成字节,序列化
代码:

arr = [11,22,33]
bs = pickle.dumps(arr)
print(bs)

结果:

b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x0bK\x16K!e.'

保存并查看
代码:

with open('arr.dat',mode='wb') as f:
    f.write(bs)

结果:
在这里插入图片描述

反序列化:还原数据
loads():把字节还原回对象,反序列化

代码:

f = open('arr.dat',mode='rb')
content = f.read()
print(content)
# 还原成正常的对象
r = pickle.loads(content)
print(r)

结果:

[11, 22, 33]

pickle.load()和pickle.dump()直接操作文件,用得不多
pickle处理的都是字节

(二)json

把对象处理成json字符串,进行存储或传输
早期,xml是作为前后端数据传输的数据格式,难以解析
json更好解析,有些类似于字典
json的概念是web前端的概念,是JavaScript的概念,本质是一个字符串
json是Python提供的一个模块,是专门处理json字符串的。

引入一个字典

dic = {
    "name":True,
    "age":None,
    "wife":{
        "name":"章子怡",
        "hobby":False
        }
}

查看他的类型
代码:

print(type(dic))

结果:

<class 'dict'>

json.dumps(dic):把Python字典序列化成json字符串
代码:

s = json.dumps(dic) 
print(s)

结果:

{"name": true, "age": null, "wife": {"name": "\u7ae0\u5b50\u6021", "hobby": false}}

结果是ascii码的形式,需要解码
代码:

s = json.dumps(dic,ensure_ascii=False)
print(s)

结果:

{"name": true, "age": null, "wife": {"name": "章子怡", "hobby": false}}

Python的语法和JavaScript不一样,True-true,False-false,None-null
查看类型
代码:

print(type(s))

结果:

<class 'str'>

字符串便于数据传输,不便于取值

json.loads():json字符串还原成字典
代码:

s1 = '{"name": true, "age": null, "wife": {"name": "章子怡", "hobby": false}}'
dic1 = json.loads(s1)
print(dic1)
print(type(dic1))

结果:

{'name': True, 'age': None, 'wife': {'name': '章子怡', 'hobby': False}}
<class 'dict'>

dump()和load()也是直接处理文件


http://www.kler.cn/a/593591.html

相关文章:

  • 4.6--入门知识扫盲,路径追踪与路由误导:Tracert攻击 vs ICMP重定向攻击(包你看一遍全记住)
  • iPaaS集成平台中的API可视化编排能给企业带来什么作用
  • Bilve 搭建手册
  • 解析Collections工具类主要功能
  • Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac‘.
  • PyTorch分布式训练中各节点如何通信
  • 第1次课枚举算法
  • Ubuntu 软件仓库管理概述与基本原理
  • PCL—passThrough 点云直通滤波器
  • 阿根廷主流收单方式:Rapipago支付
  • 复盘的力量:如何通过复盘提升项目管理水平
  • Postman高级功能深度解析:Mock Server与自动化监控——构建高效API测试与监控体系
  • 【最后203篇系列】020 rocksdb agent
  • Apache Paimon 在抖音集团多场景中的优化实践
  • latex-二项式括号怎么敲?
  • 【嵌入式学习】补码-加减乘除电路
  • Linux系统docker部署Ollama本地大模型及部署Hugging Face开源模型,ollama相关注意点,非ollama模型创建,模型量化,显存建议
  • 服务器相关的硬件知识
  • git推送代码相关学习——(一)
  • llama源码学习·model.py[3]ROPE旋转位置编码(2)旋转角度生成代码