当前位置: 首页 > 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…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...