博客
关于我
py 的 第 19 天
阅读量:796 次
发布时间: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/

你可能感兴趣的文章
PSR PHP业界规范
查看>>
psv黑商店pkgj最新版下载_黑科技p图app下载-黑科技p图最新版下载v1.0.0
查看>>
ps命令详解
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 1 Quickstart
查看>>
PS网页设计教程XVIII——在Photoshop中设计优雅的乡村酒店或餐厅的网页布局
查看>>
PS获取RGB和十六进制的颜色值
查看>>
PyTorch 的 10 条顶级知识点
查看>>
PS辅助工具Assistor PS
查看>>
pt-archiver 归档历史数据及参数详解
查看>>
pt-online-schema-change使用详解
查看>>
PyTorch 模型性能分析和优化 — 第 2 部分
查看>>
PTA L1-011 A-B
查看>>
pta l2-1紧急救援(Dijkstra)
查看>>
pta求阶乘序列前n项和_学霸整理——求数列的通项公式解法集锦,转化、归纳一文全懂...
查看>>
SpringBoot中集成Redis实现对redis中数据的解析和存储
查看>>
pthread_create导致的程序崩溃
查看>>
ptyhon POSIX
查看>>
public private protected default小结
查看>>
PublicCMS怎么用金蝶Apusic Application Server部署
查看>>
publish over ssh、 Kubernetes Continuous Deploy插件
查看>>