Python学习—open函数,json与pickle知识点,Os模块详解

目录

1. Open函数

2.json与pickle模块

json模块

1. json.dumps()

2. json.dump()

3. json.loads()

4. json.load()

pickle 模块

1. pickle.dumps()

2. pickle.dump()

3. pickle.loads()

4. pickle.load()

3.Os模块


1. Open函数

在Python中,open() 函数用于打开文件,并返回一个文件对象,可以用于读取或写入文件内容。open() 函数的基本语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 必需,表示要打开的文件名(包括路径)。
  • mode: 可选,表示文件的打开模式,默认为 'r'(只读模式)。常用的模式包括:
    • 'r': 只读模式(默认)。
    • 'w': 只写模式。如果文件存在则覆盖,不存在则创建。
    • 'x': 创建并写入一个新文件,如果文件已存在则失败。
    • 'a': 追加模式,将内容写入到文件末尾。
    • 'b': 二进制模式。
    • 't': 文本模式(默认)。
    • '+': 打开文件进行更新(读取和写入)。
  • 其他参数如 bufferingencodingerrors 等通常是可选的,用于控制文件读写时的缓冲行为、文本编码、错误处理等。

示例:

# 打开一个文件进行读取
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()# 打开一个文件进行写入
file = open('output.txt', 'w')
file.write('Hello, World!')
file.close()

在使用 open() 函数时,建议在操作文件完毕后调用 file.close() 来关闭文件对象,这样可以释放资源并确保写入的内容被正确保存。另外,也可以使用 with 语句来自动管理文件的打开和关闭:

with open('example.txt', 'r') as file:content = file.read()print(content)
# 文件会在离开 `with` 块后自动关闭

2.json与pickle模块

json模块

1. json.dumps()

json.dumps()函数用于将Python对象转换为JSON格式的字符串。其基本语法如下:

import json# 将Python对象转换为JSON字符串
json_str = json.dumps(python_object)

其中,python_object可以是字典、列表、元组等基本的Python数据结构。

示例:

data = {'name': 'Alice', 'age': 30}
json_str = json.dumps(data)
print(json_str)  # 输出: {"name": "Alice", "age": 30}
2. json.dump()

json.dump()函数与json.dumps()类似,不同之处在于它将Python对象转换为JSON格式的字符串后,直接写入到文件对象中。其基本语法如下:

import json# 将Python对象转换为JSON字符串,并写入文件
with open('data.json', 'w') as f:json.dump(python_object, f)

这个方法特别适合于将Python数据结构持久化到文件中。

3. json.loads()

json.loads()函数用于将JSON格式的字符串转换为Python对象。其基本语法如下:

import json# 将JSON字符串转换为Python对象
python_obj = json.loads(json_string)

示例:

json_str = '{"name": "Alice", "age": 30}'
data = json.loads(json_str)
print(data)  # 输出: {'name': 'Alice', 'age': 30}
4. json.load()

json.load()函数与json.loads()类似,不同之处在于它从文件对象中读取JSON数据,并将其解析为Python对象。其基本语法如下:

import json# 从文件中读取JSON数据,并解析为Python对象
with open('data.json', 'r') as f:data = json.load(f)

这个方法通常用于从文件中加载之前存储的JSON数据。

总结:
1.  json.dumps():将Python对象转换为JSON格式的字符串。
2.  json.dump():将Python对象转换为JSON格式的字符串,并写入文件。
3.  json.loads():将JSON格式的字符串转换为Python对象。
4.  json.load():从文件中读取JSON数据,并将其解析为Python对象。

pickle 模块

1. pickle.dumps()

pickle.dumps() 函数将 Python 对象序列化为一个字节对象,可以稍后写入文件或者通过网络传输。其基本语法如下:

import pickle# 将Python对象序列化为字节对象
pickle_bytes = pickle.dumps(python_object)

示例:

data = {'name': 'Bob', 'age': 25}
pickle_bytes = pickle.dumps(data)
2. pickle.dump()

pickle.dump() 函数与 pickle.dumps() 类似,不同之处在于它直接将序列化后的字节数据写入文件对象中。其基本语法如下:

import pickle# 将Python对象序列化为字节对象,并写入文件
with open('data.pkl', 'wb') as f:pickle.dump(python_object, f)

示例:

data = {'name': 'Bob', 'age': 25}
with open('data.pkl', 'wb') as f:pickle.dump(data, f)
3. pickle.loads()

pickle.loads() 函数从字节对象中反序列化出 Python 对象。其基本语法如下:

import pickle# 从字节对象中反序列化出Python对象
python_obj = pickle.loads(pickle_bytes)

示例:

pickle_bytes = b'\x80\x04\x95\x1a\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x03Bob\x94\x8c\x03age\x94K\x19u.'
data = pickle.loads(pickle_bytes)
print(data)  # 输出: {'name': 'Bob', 'age': 25}
4. pickle.load()

pickle.load() 函数与 pickle.loads() 类似,不同之处在于它从文件对象中读取字节数据,并将其反序列化为 Python 对象。其基本语法如下:

import pickle# 从文件中读取字节数据,并反序列化出Python对象
with open('data.pkl', 'rb') as f:data = pickle.load(f)

示例:

with open('data.pkl', 'rb') as f:data = pickle.load(f)
print(data)  # 输出: {'name': 'Bob', 'age': 25}

注意事项:
1.  pickle 模块生成的序列化数据是 Python 特定的,并不跨语言兼容,因此在不同的 Python 版本之间使用时要小心。
2.  对于简单的数据结构和与 Python 特定的应用场景,pickle 提供了更高效的数据序列化和反序列化方法。

3.Os模块

关于Os模块的各种方法,见代码:

import os# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)# 改变当前工作目录
os.chdir('/path/to/new/directory')
print("新的工作目录:", os.getcwd())# 列出目录中的文件和子目录
files_and_dirs = os.listdir('/path/to/directory')
print("目录内容:", files_and_dirs)# 创建目录(包括多级目录)
os.makedirs('/path/to/new/directory')# 删除空目录
os.rmdir('/path/to/directory')# 删除文件
os.remove('/path/to/file')# 获取环境变量
env_var = os.getenv('ENV_VARIABLE_NAME')
print("环境变量:", env_var)# 设置环境变量
os.environ['ENV_VARIABLE_NAME'] = 'value'# 路径拼接
path = os.path.join('/path', 'to', 'directory')# 获取文件名和目录名
filename = os.path.basename('/path/to/file.txt')
dirname = os.path.dirname('/path/to/file.txt')# 检查路径是否为文件或目录
is_file = os.path.isfile('/path/to/file.txt')
is_dir = os.path.isdir('/path/to/directory')# 重命名文件
os.rename('old_filename.txt', 'new_filename.txt')# 检查路径是否存在
exists = os.path.exists('/path/to/something')

知识模块图:

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

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

相关文章

Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署

目录 环境准备 导入项目包 配置jenkins 构建项目 配置项目上线 修改项目代码测试 环境准备 本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830 首先在node01主机中操作,本次操作需要java8的版本,将之前安装的java17卸…

IoTDB 分段查询语句详解:GROUP BY + 时序语义

GROUP BY 查询子句的时序语义展开,IoTDB 支持的分段方式总结! 存储的数据通过分析来发挥价值,当一组被存储的数据通过查询得到分析后的结果时,这些数据才真正在数据库中实现了价值闭环。 在关系型数据库中,GROUP BY 子…

陀螺仪LSM6DS3TR-C的简单使用

文章目录 一、前言二、硬件1.引脚说明2.原理图 三、软件1.IIC读写函数1.1 读函数1.2 写函数 2.初始化2.1 检测设备是否存在2.2 读取LSM6DS3TRC器件ID2.3 LSM6DS3TRC重启,重置寄存器2.5 LSM6DS3TRC设置块数据更新2.6 LSM6DS3TRC设置加速度计的数据采样率2.7 LSM6DS3T…

剪画小程序:刷到好听的音频怎么将音频保存到手机里

在这个短视频盛行的时代,相信很多朋友都和我一样,常常会被那些精彩视频中的背景音乐深深吸引。 比如我,特别喜欢听歌,这段时间在短视频平台上刷到了好多好看的视频,里面的背景音乐简直绝绝子! 那么&#x…

【数据分享】2013-2022年我国省市县三级的逐年SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000——2022年的省市县三级的逐年PM2.5数据和2013-2022年的省市县三级的逐年CO数据(均可查看之前的文章获悉详情)! 本次我们分享的是我国2013——2022年的省…

《样式设计011:模组-瓷片区》

描述:在开发小程序过程中,发现一些不错的案例,平时使用也比较多,稍微总结了下经验,以下内容可以直接复制使用,希望对大家有所帮助,废话不多说直接上干货! 一、小程序:模组…

TeraTerm 使用技巧

参考资料 自分がよく使うTeratermマクロによる自動ログインのやり方をまとめてみたよTera Term マクロでログインを自動化してみたTera Term のススメ 目录 简介一. 常用基础设置1.1 语言变更1.2 log设置 二. 小技巧2.1 指定host别名2.2 新开窗口2.3 设置粘贴多行命令时的行间…

数学建模学习(111):改进遗传算法(引入模拟退火、轮盘赌和网格搜索)求解JSP问题

文章目录 一、车间调度问题1.1目前处理方法1.2简单案例 二、基于改进遗传算法求解车间调度2.1车间调度背景介绍2.2遗传算法介绍2.2.1基本流程2.2.2遗传算法的基本操作和公式2.2.3遗传算法的优势2.2.4遗传算法的不足 2.3讲解本文思路及代码2.4算法执行结果: 三、本文…

怎么使用动态IP地址上网

如何设置动态IP地址上网? 设置动态IP地址上网的步骤如下: 一、了解动态IP地址 动态IP地址是由网络服务提供商(ISP)动态分配给用户的IP地址,它会根据用户的需求和网络情况实时改变。相比于静态IP地址,动态…

基于术语词典干预的机器翻译挑战赛笔记 Task3 #Datawhale AI 夏令营

书接上回,上回在这捏: 基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营-CSDN博客文章浏览阅读223次,点赞10次,收藏5次。基于术语词典干预的机器翻译挑战赛笔记Task2https://blog.csdn.net/qq_23311271/article/…

状压dp,D - Grid Puzzle

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 D - Grid Puzzle 二、解题报告 1、思路分析 贪心做法看不懂(为什么我赛时要跟贪心过不去啊) 这个题麻烦在这个case:2 4 4 2,我们可以清除三次2x2得到 但是我…

前端post提交一次会有两次请求?

1 问题:前端post只提交一次会有两次请求? 前端post只提交一次会有两次请求?如下图: 这里是执行了两次post提交,每个post都有两次(一次是preflight以options方式,一次是xhr,原本…

Yolo-World网络模型结构及原理分析(三)——RepVL-PAN

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 网络结构2. 特征融合3. 文本引导(Text-guided)4. 图像池化注意力(Image-Pooling Attention)5. 区域文本匹配&…

springboot+vue+mybatis校园热点新闻系统+PPT+论文+讲解+售后

21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到…

如何在 Windows 上恢复丢失或删除的文件

意外删除重要文件或文档的历史与 Windows 本身一样悠久,这就是为什么有许多内置方法来恢复它。从深入回收站到挖掘 Microsoft 的 Windows 文件恢复实用程序,以下是如何在 Windows 中恢复丢失和删除的文件。 检查回收站 Windows 帮助您恢复已删除并需要再…

IO多路复用之poll、epoll和select区分

epoll和select 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。 select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。 而epoll版宿管大妈会先记下每位同学的房间号, 你的朋友来时,只需告诉你…

德国汉堡大学、清华大学联合英国布里斯托机器人实验室的研究工作分享:基于视觉遥操作的多指机械手灵巧操作

德国汉堡大学(张建伟院士团队)、清华大学(孙富春教授和方斌)联合英国布里斯托机器人实验室等单位在基于视觉信息遥操作的多指机械手灵巧操作研究方面取得进展。该工作得到了德国科学基金会(DFG)与中国国家自…

Git分支管理基本原理

原文全文详见个人博客: Git分支管理基本原理上文已讨论过svn分支管理的基本原理,本文将继续探讨Git分支管理的基本原理,以便后续进行进一步的理解和对比:https://www.coderli.com/git-branch-method/【Java学习交流(982860385)】…

Linux journalctl日志太长,如何倒序查看journalctl --reverse,journalctl -xeu

文章目录 需求实验方法一方法二 需求 Linux journalctl日志太长,如何倒序查看 我们通常关心的是最近的日志,但是每次打开日志都是按时间先后顺序显示的,如何倒序查看,请看下面: 实验 方法一 journalctl 命令默认按…

Linux工具相关介绍

目录 1.linux安装软件 2.Linux软件生态问题 3.linux软件包管理器yum 4.linux里面好玩的小命令 4.1安装源 4.2小火车 4.3人物说话情景 5.vim简单介绍 5.1简单认识 5.2代码编写 5.3命令模式 1.linux安装软件 1.1源代码安装:这个里面可能根据代码bug需要修改…