在字符串的 格式化 与 反格式化 中用到的 模块 和 方法

目录

一,Open函数使用

二,Json与pickle

一,json模块

1. 将 Python 对象转换为 JSON 字符串

2. 将 JSON 字符串解析为 Python 对象

3. 读取和写入 JSON 文件

4. 处理 JSON 中的特殊数据类型

5. 错误处理

二,pikel模块

1. 序列化 Python 对象

2. 反序列化 Python 对象

3. 处理自定义对象的序列化和反序列化

4. 使用 pickle.dumps() 和 pickle.loads()

5. 注意事项

三,Os模块的常见用法

1. 获取当前工作目录

2. 切换工作目录

3. 列出目录中的文件和子目录

4. 创建目录

5. 删除目录

6. 删除文件

7. 执行系统命令

8. 获取环境变量

9. 执行文件和目录操作的更多方法

10. 获取操作系统相关信息


一,Open函数使用

open函数的使用是用于打开一个文件,并返回文件对象。

打开文件后,可以通过文件对象进行读取、写入、关闭等操作。常用的文件对象方法有:

  • read(): 读取文件内容。
  • write(s): 写入字符串s到文件。
  • close(): 关闭文件。

示例代码:

# 以只读模式打开文件
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()# 以写入模式打开文件
file = open('example.txt', 'w')
file.write('Hello, world!')
file.close()

在使用open函数打开文件后,最好使用with open语句来自动关闭文件,避免忘记手动关闭文件造成资源浪费。示例代码:

with open('example.txt', 'r') as file:content = file.read()print(content)

二,Json与pickle

json 模块是 Python 标准库中用于处理 JSON 格式数据的模块。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。

一,json模块

以下是 json 模块的一些常见用法:

1. 将 Python 对象转换为 JSON 字符串

使用 json.dumps() 方法可以将 Python 对象(字典、列表等)转换为 JSON 格式的字符串。

import jsondata = {'name': 'John','age': 30,'city': 'New York'
}json_string = json.dumps(data)
print(json_string)

输出:

{"name": "John", "age": 30, "city": "New York"}

2. 将 JSON 字符串解析为 Python 对象

使用 json.loads() 方法可以将 JSON 格式的字符串解析为 Python 对象(字典、列表等)。

json_string = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data['name'])
print(data['age'])
print(data['city'])

输出:

John
30
New York

3. 读取和写入 JSON 文件

可以使用 json.dump() 将 Python 对象直接写入 JSON 文件,以及使用 json.load() 从 JSON 文件读取数据。

写入 JSON 文件示例:

data = {'name': 'John','age': 30,'city': 'New York'
}with open('data.json', 'w') as f:json.dump(data, f)

读取 JSON 文件示例:

with open('data.json', 'r') as f:data = json.load(f)print(data)

4. 处理 JSON 中的特殊数据类型

JSON 支持的数据类型包括字符串、数字、布尔值、数组、对象(字典)以及 null 值。json 模块可以处理 Python 中的大部分数据类型,并在序列化为 JSON 字符串时自动转换为适当的 JSON 格式。

例如,处理日期时间对象时,可以使用 default 参数来自定义序列化过程。

import json
from datetime import datetimedata = {'name': 'John','age': 30,'timestamp': datetime.now()
}# 自定义处理日期时间对象
def datetime_handler(x):if isinstance(x, datetime):return x.isoformat()json_string = json.dumps(data, default=datetime_handler)
print(json_string)

5. 错误处理

在处理 JSON 数据时,可能会遇到不符合 JSON 格式的字符串,例如格式错误的 JSON 字符串。可以使用 json.JSONDecodeError 来捕获解析错误。

json_string = '{"name": "John", "age": 30, "city": "New York"'
try:data = json.loads(json_string)print(data)
except json.JSONDecodeError as e:print(f"JSON decode error: {e}")

这些是 json 模块的一些常见用法。它在处理数据序列化、反序列化以及文件操作时非常有用,是处理跨平台数据交换的重要工具之一。

二,pikel模块

pickle 模块是 Python 的标准库之一,用于序列化和反序列化 Python 对象。它能够将 Python 对象转换为字节流(即序列化),并且可以从字节流重新构建出原始的 Python 对象(即反序列化)。pickle 模块的主要特点是可以处理几乎所有的 Python 对象,包括自定义的类实例、函数、内置对象等。

以下是 pickle 模块的常见用法示例:

1. 序列化 Python 对象

使用 pickle.dump() 方法将 Python 对象序列化为字节流,并将其写入文件中。

import pickledata = {'name': 'John','age': 30,'city': 'New York'
}# 序列化对象并写入文件
with open('data.pickle', 'wb') as f:pickle.dump(data, f)

2. 反序列化 Python 对象

使用 pickle.load() 方法从文件中读取字节流并反序列化为 Python 对象。

import pickle# 从文件中读取并反序列化对象
with open('data.pickle', 'rb') as f:data = pickle.load(f)print(data)

3. 处理自定义对象的序列化和反序列化

pickle 模块可以序列化和反序列化自定义的 Python 类的实例。只要对象是 Python 可序列化的,就可以通过 pickle 来处理。

import pickleclass Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person('Alice', 25)# 序列化自定义对象
with open('person.pickle', 'wb') as f:pickle.dump(person, f)# 反序列化对象
with open('person.pickle', 'rb') as f:loaded_person = pickle.load(f)print(loaded_person.name)print(loaded_person.age)

4. 使用 pickle.dumps() 和 pickle.loads()

除了直接操作文件外,还可以使用 pickle.dumps() 将对象序列化为字节流(而不是写入文件),并使用 pickle.loads() 将字节流反序列化为对象。

import pickledata = {'name': 'John','age': 30,'city': 'New York'
}# 将对象序列化为字节流
serialized_data = pickle.dumps(data)# 反序列化字节流为对象
deserialized_data = pickle.loads(serialized_data)
print(deserialized_data)

5. 注意事项

  • 跨 Python 版本兼容性问题pickle 生成的序列化数据依赖于 Python 版本,不同 Python 版本之间的兼容性可能存在问题,因此在存储或传输 pickle 数据时要注意。
  • 安全性:反序列化 pickle 数据存在安全风险,因为恶意构造的 pickle 数据可能会执行任意代码。因此,不要从不受信任的源加载 pickle 数据。

总结来说,pickle 模块是 Python 中方便的对象持久化和数据交换工具,特别适用于在同一版本的 Python 环境中快速地序列化和反序列化对象。

三,Os模块的常见用法

os 模块是 Python 的标准库之一,提供了许多与操作系统交互的函数。它允许你执行文件和目录操作,管理进程,处理环境变量等

1. 获取当前工作目录

import oscurrent_dir = os.getcwd()
print("Current working directory:", current_dir)

2. 切换工作目录

import osos.chdir('/path/to/new/directory')
print("Current working directory after change:", os.getcwd())

3. 列出目录中的文件和子目录

import osfiles_and_dirs = os.listdir('/path/to/directory')
print("Files and directories:", files_and_dirs)

4. 创建目录

import osos.makedirs('/path/to/new/directory', exist_ok=True)

5. 删除目录

import osos.rmdir('/path/to/empty/directory')

6. 删除文件

import osos.remove('/path/to/file.txt')

7. 执行系统命令

import osos.system('ls -l')

8. 获取环境变量

import ospython_path = os.getenv('PYTHONPATH')
print("PYTHONPATH:", python_path)

9. 执行文件和目录操作的更多方法

  • os.path 模块提供了一些用于操作路径的有用函数,如 os.path.join()os.path.exists()os.path.isdir()os.path.isfile() 等。

10. 获取操作系统相关信息

import osprint("Operating system:", os.name)
print("Parent process ID:", os.getppid())
print("Process ID:", os.getpid())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐

​在信息快速传播的时代,直播和视频创作成为了表达与交流的重要方式。对于追求卓越声音品质的创作者而言,一款性能卓越的无线麦克风宛如一把利剑。接下来,我要为大家介绍几款备受好评的无线麦克风,这些都是我在实际使用中体验良好…

淘客返利系统中的服务发现与注册机制详解

淘客返利系统中的服务发现与注册机制详解 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨淘客返利系统中的服务发现与注册机制,并结合Java代码进行详细…

【Linux常用命令】之sed命令

Linux常用命令之sed命令 文章目录 Linux常用命令之sed命令常用命令之sed背景介绍 总结 作者简介 听雨:一名在一线从事多年研发的程序员,从事网站后台开发,熟悉java技术栈,对前端技术也有研究,同时也是一名骑行爱好者。…

SpringBoot大模型流式接口

话不多说,直接上货 import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Re…

人工智能(AI)在办公场所的广泛应用

人工智能(AI)在办公场所的广泛应用正逐步改变着我们的工作方式和效率。随着技术的进步,越来越多的公司和组织开始采用各种AI技术来优化工作流程、提升生产力,并提供更好的用户体验。以下是人工智能在办公方面的一些主要作用和影响…

linux学习笔记整理: 关于linux:nginx服务器 2024/7/20;

nginx服务器: 自理解: nginx是一种分发式服务器,统一进入的接口,并将进入的用户进行指定性分发给不同服务器地址交互; Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内…

Java 如何获取一个 class 的所有属性和方法

👆🏻👆🏻👆🏻关注博主,让你的代码变得更加优雅。 前言 Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率&#xf…

LeetCode 125.验证回文串 C++写法

LeetCode 125.验证回文串 C写法 思路🤔: 我们不对字符串进行删除,这样效率太低了,所以可以左右开工,下标begin和end遇到不是字母数字字符的就跳过,当两边都是字母就进行比对,一样就继续往后走&a…

sqlserver 跨服务器进行数据增删改查

--连接远程服务器 exec sp_addlinkedserver 目标服务器名(自定义取名), , SQLOLEDB , 192.168.180.18(目标服务器IP) --登录远程服务器 exec sp_addlinkedsrvlogin 目标服务器名, false ,null, (用户名&#xff09…

PCL 批量处理点云文件

系列文章目录 文章目录 系列文章目录前言一、PCL是什么?二、配置PCL环境三、使用步骤1.引入库2.主函数 总结 前言 点云处理时往往会需要对多个点云进行处理,比如在预处理,保存点云时。下面提供一个简单的点云批量转换例子,PCD文件…

Midjourney绘画提示词精选

Midjourney绘画提示词精选 在探索Midjourney这一强大的AI绘画工具时,选择合适的提示词是创作出令人惊艳作品的关键。这些提示词不仅能够帮助Midjourney理解你的创作意图,还能引导它生成出符合你期望的图像。以下是对Midjourney绘画提示词的精选与解析&a…

power bi 度量值相关函数

power bi 度量值相关函数 1. 度量值的好处2. 度量值上下文3. calculate() 函数4. 度量值存储方式 1. 度量值的好处 度量值不会增加一列,不会修改表格度量值自带筛选功能 2. 度量值上下文 新建行和新建度量值的区别 度量值是筛选上下文:度量值天生具有…

机器学习 | 阿里云安全恶意程序检测

目录 一、数据探索1.1 数据说明1.2 训练集数据探索1.2.1 数据特征类型1.2.2 数据分布1.2.3 缺失值1.2.4 异常值1.2.5 标签分布探索 1.3 测试集探索1.3.1 数据信息1.3.2 缺失值1.3.3 数据分布1.3.4 异常值 1.4 数据集联合分析1.4.1 file_id 分析1.4.2 API 分析 二、特征工程与基…

SimGCL和XSimGCL

SimGCL 动机 传统的SGL(图自监督学习)使得模型可以自行发掘任务特征,解决了数据稀疏和长尾分布的问题,SGL采用节点dropout、边dropout和随机游走三种方式对图结构进行扰动(图增强)进行对比学习,可以有效提高性能 SGL主要解决传统推荐系统面临的数据稀疏和长尾分布问题。…

k8s中pod创建过程

1,客户端向apiserver发起一个create pod请求 2,apiserver接收到pod创建请求后,生成一个包含创建信息的yaml 3,apiserver将yaml信息写入etcd数据库 4,根据scheduler调度器为pod分配node主机 5,node kubelet检…

无监督目标检测:挑战与机遇的双重奏

无监督目标检测:挑战与机遇的双重奏 无监督目标检测是计算机视觉领域中一个前沿且充满挑战的研究课题。它旨在无需大量标注数据的情况下,识别图像中的目标。这一技术的发展,对于减少人工标注成本、提高检测效率具有重要意义。本文将深入探讨…

2024中国大学生算法设计超级联赛(1)

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,彩笔ACMer一枚。 🏀所属专栏:杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 📢📢📢传送门 A - 循环位移解…

分治算法(算法篇)

算法之分治算法 分治算法 概念: 分治算法也是一种思想策略,分治算法就是将大问题不断地分成小问题解决后再重新构建原问题地解。一般地分治算法的时间复杂度为O(NlogN)分:递归解决较小的问题;治:然后,从…

linux 网络子系统

__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数,它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析: 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…

【简历】贵州某二本学院:JAVA秋招简历指导,简历通过率基本为0

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这是一份某师范学院25届二本同学的Java简历。这种就是每年都会出现的少量的完全不知道简历应该怎么写的同学。 所以这个简历&#xff0…