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

python常用模块(JSON与pickle、Os模块)

一、Open函数使用

        在python中,open() 函数用于打开文件,并返回一个文件对象,同时支持读取写入文件。

基本用法:

file = open(file_path, mode='r', encoding=None, newline=None)

其中file_path表示的是文件的路径,可以是相对路径或绝对路径mode表示的是用什么模式打开文件,encoding是使用什么方式进行解读newline是指定换行符的处理方式,默认值是None,表示使用系统默认的换行符处理。

(1)、mode(文件的打开模式)

        参数 mode 是用来指定文件打开模式的一个字符串参数。该参数决定了文件的操作方式,包括读取写入追加等操作。

  • 读取模式 ("r"):

    • 默认模式,用于读取文件内容。
    • 如果文件不存在,会引发 FileNotFoundError 错误。
    • f = open("./44.函数的参数.py", mode="r", encoding="utf8")
      # 能否读取
      r = f.readable()
      # 读取整个文件,并以字符串的形式返回
      r = f.read()
      # 读取一行,并返回字符串
      r = f.readline()
      # 逐行读取,并逐一放入列表中
      r = f.readlines()
  • 写入模式 ("w"):

    • 打开文件进行写入操作。
    • 如果文件已存在,则会清空文件中的内容,从头开始写入。
    • 如果文件不存在,则会创建一个新文件进行写入。
    • f = open("./44.函数的参数.py", mode="w", encoding="utf8")
      # 能否写入
      w = f.writeable()
      # 将原文件中的内容覆盖,再写入"hello world"
      w = f.write("hello world")
      
  • 追加模式 ("a"):

    • 打开文件进行追加操作,即在文件末尾添加新内容。
    • 如果文件不存在,则会创建一个新文件进行写入。
    • with open('file.txt', 'a') as file:file.write('\nAdding more content...')# 在file.txt内容的后面进行添加内容\nAdding more content...
  • 二进制模式 ("b"):

    • 以二进制模式打开文件,用于处理非文本文件,如图片、视频等。
    • 可以与读取、写入、追加模式一起使用,例如 'rb''wb''ab'
  • 文本模式 ("t" 或省略不写):

    • 默认以文本模式打开文件,用于处理文本文件。
    • 可以与读取、写入、追加模式一起使用,例如 'rt''wt''at'
  • 读写模式 ("r+"):

    • 打开文件进行读取和写入操作,文件指针位于文件开头。
    • 文件必须存在,否则会抛出 FileNotFoundError
  • 写读模式 ("w+"):

    • 打开文件进行读取和写入操作。
    • 如果文件已存在,则清空文件内容,并从头开始写入;如果文件不存在,则创建新文件。
    • 文件指针位于文件开头。
  • 追加读取模式 ("a+"):

    • 打开文件进行读取和追加操作。
    • 文件指针位于文件末尾。

(2)、encoding 

        encoding指定文件的编码方式,默认为None,表示使用系统默认的编码方式。

        encoding包括:UTF-8 ('utf-8')ASCII ('ascii')UTF-16 ('utf-16'),GBK ('gbk')。

二、JSON与pickle

(1)、JSON

        在Python中,可以使用json模块来处理JSON数据。json模块提供了一些函数来进行JSON数据的编码和解码。注:json能被所有的编程语言读取。

下面是一些常用的json函数:

  • json.loads():将JSON字符串解码为Python对象。
  • json.dumps():将Python对象编码为JSON字符串。
  • json.load():从文件中读取JSON数据并解码为Python对象。
  • json.dump():将Python对象编码为JSON格式并写入文件。

使用示例:

import json# JSON字符串解码为Python对象
json_str = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_str)
print(data['name'])  # 输出: John# Python对象编码为JSON字符串
data = {'name': 'John','age': 30,'city': 'New York'
}
json_str = json.dumps(data)
print(json_str)  # 输出: {"name": "John", "age": 30, "city": "New York"}# 从文件中读取JSON数据并解码为Python对象
with open('data.json') as json_file:data = json.load(json_file)print(data['name'])  # 输出: John# 将Python对象编码为JSON格式并写入文件
data = {'name': 'John','age': 30,'city': 'New York'
}
with open('data.json', 'w') as json_file:json.dump(data, json_file)

注意:在使用json函数时,需要将输入的字符串或文件内容符合JSON数据的格式。

(2)、pickle

        pickle模块是Python中用于对象序列化和反序列化的模块。它可以将Python对象转换成字节流,以及将字节流转换回Python对象。

        使用pickle模块,可以方便地将复杂的数据结构(如列表、字典、类等)进行序列化,并保存到文件或网络中。同时,也可以通过反序列化,将保存的数据重新转化成Python对象。

        注:pickle只能被python语言识别。

以下是pickle模块的常用函数:

  • pickle.dumps(obj): 将对象obj序列化成字节流。
  • pickle.loads(bytes):将字节流bytes反序列化成Python对象。
  • pickle.dump(obj, file):将对象obj序列化后写入文件file。
  • pickle.load(file):从文件file中读取序列化后的对象并进行反序列化。
import pickle# 创建一个字典对象
data = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 将对象序列化为字节流
bytes_data = pickle.dumps(data)# 将字节流反序列化为对象
obj = pickle.loads(bytes_data)print(obj)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

三、Os模块

        在 python 中,os 模块提供了与操作系统交互的功能。它允许您执行文件和目录操作,处理进程和环境变量,以及执行其他与操作系统相关的任务。os模块跟win系统中cmd的操作命令大致一样。

import os# 列出目录内容
dir_contents = os.listdir('/path/to/directory')
print("Directory contents:", dir_contents)# 创建目录
os.mkdir('/path/to/new/directory')# 删除目录
os.rmdir('/path/to/directory')# 判断文件或目录是否存在
exists = os.path.exists('/path/to/file_or_directory')
  1. os.path.isfile(path):检查指定路径是否为一个文件。

  2. os.path.isdir(path):检查指定路径是否为一个目录。

  3. os.path.join(path1, path2):将两个路径组合成一个新的路径。

  4. os.path.basename(path):返回指定路径的文件名。

  5. os.path.dirname(path):返回指定路径的目录名。

相关文章:

python常用模块(JSON与pickle、Os模块)

一、Open函数使用 在python中,open() 函数用于打开文件,并返回一个文件对象,同时支持读取和写入文件。 基本用法: file open(file_path, moder, encodingNone, newlineNone) 其中file_path表示的是文件的路径,可以…...

MMLab-dataset_analysis

数据分析工具 这里写目录标题 数据分析工具dataset_analysis.py数据可视化分析 benchmark.pybrowse_coco_json.pybrowse_dataset.pyOptimize_anchors mmyolo、mmsegmentation等提供了数据集分析工具 dataset_analysis.py 数据采用coco格式数据 根据配置文件分析全部数据类型或…...

艺术与技术的交响曲:CSS绘图的艺术与实践

在前端开发的世界里,CSS(层叠样式表)作为网页布局和样式的基石,其功能早已超越了简单的颜色和间距设置。近年来,随着CSS3的普及,开发者们开始探索CSS在图形绘制方面的潜力,用纯粹的代码创造出令…...

基于 JAVA 的旅游网站设计与实现

点击下载源码 塞北村镇旅游网站设计 摘要 城市旅游产业的日新月异影响着村镇旅游产业的发展变化。网络、电子科技的迅猛前进同样牵动着旅游产业的快速成长。随着人们消费理念的不断发展变化,越来越多的人开始注意精神文明的追求,而不仅仅只是在意物质消…...

【C++深度探索】二叉搜索树的全面解析与高效实现

🔥 个人主页:大耳朵土土垚 🔥 所属专栏:C从入门至进阶 这里将会不定期更新有关C/C的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 文章目录…...

Java实习记录 1 ——初入职场

Java实习记录 1 ——初入职场 引言正文收获 引言 在几个月的春招过程中,在完成学校学业的同时,进行投简历、笔试和面试。得益于较为扎实的技术基础,在暑假来临之际,找到了第一份实习工作。目前已入职将近半个月。记录一下实习经历…...

opencv—常用函数学习_“干货“_3

目录 八、图像拼接 水平拼接图像 (hconcat) 垂直拼接图像 (vconcat) 全景图像拼接 (Stitcher) 九、颜色通道及数据格式 转换图像的颜色空间 (cvtColor) 转换图像的数据类型 (convertTo) 分离和合并颜色通道 (split 和 merge) 提取和插入颜色通道 (extractChannel 和 in…...

用Docker来开发

未完成。。。 现在好像用Docker是越来越多了。之前其实也看过docker的原理,大概就是cgroup那些,不过现在就不看原理了,不谈理论,只看实际中怎么用,解决眼前问题。 用docker来做开发,其实就是解决的编译环境…...

从0开始的STM32HAL库学习2

外部中断(HAL库GPIO讲解) 今天我们会详细地学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数。 准备工作: 1、STM32开发板(我的是STM32F103C8T6) 2、STM32CubeMx软件、 IDE: Keil软件 3、STM32F1xx/ST…...

【MySQL篇】Percona XtraBackup工具备份指南:常用备份命令详解与实践(第二篇,总共五篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...

Spock单元测试框架使用介绍和实践

背景 单元测试是保证我们写的代码是我们想要的结果的最有效的办法。根据下面的数据图统计,单元测试从长期来看也有很大的收益。 单元测试收益: 它是最容易保证代码覆盖率达到100%的测试。可以⼤幅降低上线时的紧张指数。单元测试能更快地发现问题。单元测试的性…...

web安全之跨站脚本攻击xss

定义: 后果 比如黑客可以通过恶意代码,拿到用户的cookie就可以去登陆了 分类 存储型 攻击者把恶意脚本存储在目标网站的数据库中(没有过滤直接保存),当用户访问这个页面时,恶意脚本会从数据库中被读取并在用户浏览器中执行。比如在那些允许用户评论的…...

TCP与UDP的理解

文章目录 UDP协议UDP协议的特点UDP的应用以及杂项 TCP协议TCP协议段格式解释和TCP过程详解确认应答机制 -- 序号和确认序号以及6位标志位中的ACK超时重传机制连接管理机制 与标志位SYN,FIN,ACK滑动窗口与16位窗口大小流量控制拥塞控制延迟应答捎带应答和面向字节流粘包问题TCP异…...

有效应对服务器遭受CC攻击的策略与实践

分布式拒绝服务(DDoS)攻击,尤其是其中的HTTP洪水攻击或称为CC攻击(Challenge Collapsar),是当今互联网安全领域的一大挑战。这种攻击通过大量合法的请求占用大量网络资源,导致服务器无法正常响应…...

STM32判断休眠

STM32是否进入休眠模式(或称为睡眠模式)的判断主要基于其功耗状态、内部时钟的关闭情况以及唤醒后的行为。以下是根据参考文章提供的信息,判断STM32是否进入休眠模式的方法: 功耗状态: STM32在休眠模式下,功耗会显著降低。这是因为休眠模式仅关闭了内核时钟,但外设仍然保…...

TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码

多语言跨境电商外贸商城 TikTok内嵌商城,商家入驻一键铺货一键提货 全开源完美运营,接在tiktok里面的商城内嵌,也可单独分开出来当独立站运营 二十一种语言,可以做很多国家的市场,支持商家入驻,多店铺等等…...

前端学习(二)

这篇文章是紧接着前一篇前端学习写的,主要要写的是js剩下的基础知识 事件的绑定 什么是事件? HTML 事件可以是浏览器行为,也可以是用户行为。 当这些一些行为发生时,可以自动触发对应的JS函数的运行,我们称之为事件发生.JS的事件驱动指的就是…...

链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外

因为上一篇没对微服务代码很详细地说明,所以在此借花献佛,使用开源的微服务代码去说明如何去做链路追踪。 项目是开源项目,fork到github以及gitee中,然后拉取到本地 后端代码: https://gitee.com/jelex/mall-swarm.gi…...

用Agent大模型,我发现了Prompt工程师的10大必备技能

随着 AI 如此快速的发展,目前求职市场上已经出现了 AI提示词 岗位。 大家应该跟我一样,对这种新兴岗位充满好奇心,比如:想知道这类岗位目前的需求量、技能要求、薪资情况等等。 这两天我用 Agent 大模型,对AI提示词岗…...

【GraphRAG】微软 graphrag 效果实测

GraphRAG 本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。 1. Source 代码仓库: Welcome to GraphRAGhttps://microsoft.github.io/graphrag/ 微软文章1(2024.2.13):GraphRAG: Unlocking…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...