博客
关于我
py 的 第 19 天
阅读量:802 次
发布时间:2023-03-04

本文共 2193 字,大约阅读时间需要 7 分钟。

Python中的os模块与json序列化

作为一名开发者,熟悉操作系统模块os在Python中的使用是必不可少的。通过本文,我将为大家详细解释os模块的核心功能,并结合实际案例,展示其在文件操作中的应用。

os模块概述

os模块是Python中用于与操作系统交互的重要模块。它提供了多种函数,用于文件和目录的操作,如创建、读取、写入、删除文件和目录等。下面是常用函数的简要介绍:

文件操作

  • os.remove("file_name"):删除指定文件或目录。
  • os.rename("old_name", "new_name"):重命名文件或目录。
  • os.stat("path/filename"):获取文件或目录的信息,如文件大小、修改时间等。
  • os.listdir("directory_name"):列出指定目录下的所有文件和子目录。

目录操作

  • os.chdir("directory_name"):切换到指定目录。
  • os.mkdir("new_directory")os.rmdir("directory_name"):创建和删除目录。

路径处理

操作系统的路径处理与不同系统(如Windows和Linux)有所不同。为了统一处理路径,Python提供了os.path模块,用于规范化路径格式。

路径分割

path = os.path.split('/Users/apple/PycharmProjects/1/1/赵一宁作业.py')print(path)  # 输出: ('/Users/apple/PycharmProjects/1/1', '赵一宁作业.py')path = os.path.split('/Users/apple/PycharmProjects/1/1')print(path)  # 输出: ('/Users/apple/PycharmProjects/1', '1')

路径分解

dir_path = os.path.dirname(__file__)  # 获取当前脚本所在目录file_name = os.path.basename(__file__)  # 获取当前脚本文件名

路径存在性检查

os.path.exists("文件夹路径")  # 返回True或Falseos.path.isabs("文件路径")  # 判断是否为绝对路径

json序列化与反序列化

json(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,广泛应用于前后端数据传输和存储。python支持将python数据结构序列化为json格式,并反序列化回python数据结构。

序列化(dump)

import jsondata = {'username': '赵一宁', 'age': 16}json_data = json.dumps(data, ensure_ascii=False)print(json_data)

反序列化(load)

import jsonjson_data = '{"username": "赵一宁", "age": 16}'data = json.loads(json_data)print(data)

json的限制

  • 支持的数据类型:strintfloatboolNonelistdicttuple
  • 字典的键必须为字符串。
  • json不支持循环数据结构(如自定义类)。

json的高级用法

为了满足特定需求,可以通过参数调整json输出格式:

  • indent:指定缩进量。
  • sort_keys:排序字典键。
  • ensure_ascii:是否使用ASCII字符编码。

实际案例

import jsondata = {    'user': {'name': '赵一宁', 'age': 16},    'score': 85,    'grade': 'A'}json_str = json.dumps(data, sort_keys=True, indent=4, separators=(',', ':'))print(json_str)

pickle序列化

除了json,pickle也是一个常用的序列化工具,支持几乎所有python数据类型。

pickle的优点

  • 支持所有python数据类型。
  • 可以直接将数据写入文件,直接从文件中读出。

pickle的缺点

  • 不是标准格式,仅限于python环境。
  • 大数据量序列化会产生较大的文件。

pickle案例

import pickledata = {'key': 'value'}pickle_data = pickle.dumps(data)print(pickle_data)data_back = pickle.loads(pickle_data)print(data_back)

注意事项

  • 在使用jsonpickle时,确保文件读写模式正确:

    • wb:写入字节流。
    • rb:读取字节流。
  • 避免连续多次dump和load操作,防止文件损坏。

  • 处理文件时,使用try-except块,避免EOFError异常。

通过本文的学习和实践,你应该对os模块和json序列化有了更深入的理解。如果有任何问题或建议,欢迎留言讨论!

转载地址:http://kkafk.baihongyu.com/

你可能感兴趣的文章
PXE+HTTP+TFTP+Kickstart实现无人值守部署centos6.10
查看>>
pxe实现linux的自动安装
查看>>
py 的 第 19 天
查看>>
Py-Bitcoin 项目使用教程
查看>>
Pytorch 图像增强 实现翻转裁剪色调等 附代码(全)
查看>>
pyautogui模拟鼠标拖动选中文字的基本知识(附Demo)
查看>>
PyCharm - 社区版是否能够突出显示 css/javascript?
查看>>
PyCharm 2018.3.5 RC 发布,原生 SSH 支持
查看>>
Pycharm Pro 2018.2 汉化专业激活破解
查看>>
PyCharm vs VSCode,是时候改变你的 IDE 了!
查看>>
PyCharm 中,“新建”(New)和“新建项目”(New Project)-ChatGPT4o作答
查看>>
PyCharm 代码编辑与调试运行详解
查看>>
Pycharm 出现 instantitaing tests 以及test session starts 的解决方法
查看>>
Pycharm 对容器中的 Python 程序断点远程调试
查看>>
Pycharm 常用快捷键大全【快查字典版】
查看>>
PyCharm 常用的技巧完全指南
查看>>
pycharm 怎么添加python依赖的包, requirements.txt文件如何导入python库
查看>>
PyCharm 插件工具使用
查看>>
PyCharm 版本与管理详解
查看>>
PyCharm 界面排版详解
查看>>