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

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')

知识模块图:

相关文章:

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() 函数…...

基于SSM的高考志愿选择辅助系统

基于SSM的高考志愿选择辅助系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台 前台首页 院校展示 后台 后台首页 学校管理 摘要 随着高考制度的不断完…...

引领小模型潮流!OpenAI发布功能强大且成本低的GPT-4o mini

GPT-4o mini的成本比GPT-3.5 Turbo低了超过60%,其聊天表现优于Google的Gemini Flash和Anthropic的Claude Haiku。该模型从周四开始对ChatGPT的免费用户、ChatGPT Plus用户和团队订阅用户开放,并将在下周向企业用户开放。OpenAI计划未来将图像、视频和音频…...

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课,二战的时候只听了一遍强化,个人感觉没有很乱,永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图,永乐大帝讲课的时候也会特意点到线代前后联…...

Java项目:基于SSM框架实现的海鲜自助餐厅系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的海鲜自助餐厅系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…...

前端面试题日常练-day97 【Less】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Less中,以下哪个功能用于处理文本字间距? a) letter-spacing() b) word-spacing() c) text-spacing() d) space-between() Less中的Variables可以存储哪些类型的值&#xff…...

压缩视频大小的方法 怎么减少视频内存大小 几个简单方法

随着4K、8K高清视频的流行,我们越来越容易遇到视频文件体积过大,导致存储空间不足、传输速度缓慢等问题。视频压缩成为解决这一问题的有效途径,但如何在减小文件大小的同时,保证视频质量不受影响呢?本文将为你揭晓答案…...

JVM:GraalVM

文章目录 一、介绍1、什么是GraalVM:2、GraalVM版本 二、两种使用模式 一、介绍 1、什么是GraalVM: GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。GraalVM的官网地址:https://www.graa…...

海外营销推广:快速创建维基百科(wiki)词条-大舍传媒

一、维基百科的永久留存问题 许多企业和个人关心维基百科是否能永久留存。实际上,只要企业和个人的行为没有引起维基百科管理方的反感,词条就可以长期保存。如果有恶意行为或被投诉,维基百科可能会对词条进行删除或修改。 二、创建维基百科…...

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理 在之前我们已经学习了页面布局相关的知识,绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用,那么交…...

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时,如果没有刷新会正常返回到对应的页面,如果刷新后会在当前页反复横跳,或者跳转到登录页。那个时候我第一个想法时:使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…...

工厂方法模式java

文章目录 1. 概念2. 示例3. 代码示例 1. 概念 定义: 工厂方法模式又叫工厂模式,通过定义工厂父类创建对象的公共接口,而子类负责创建具体的对象 作用: 由工厂的子类来决定创建哪一个对象 缺点: 工厂一旦需要生成新的东西就需要修改代码,违背的开放封闭原则 2. 示例 3. 代码示…...

java模拟多ip请求【搬代码】

java模拟多ip请求 package url_demo;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.Random;public class HttpUtilTest…...

微软史诗级的蓝屏

本周经历了微软的蓝屏,一直到周末还在加班处理公司的问题。 个人终端受到的影响较大,服务器上也受到了影响。因为蓝屏的事情导致不少麻烦,据同事说因为蓝屏的问题,MGH 的手术安排也受到了影响。 目前我们也在着手处理有部署 Wind…...

HALCON数据结构

一、HALCON数据结构简介 1、HALCON中有两类参数:图形参数和控制参数。 2、HALCON算子参数中,图形输入参数、图形输出参数、控制输入参数和控制输出参数。 3、图形参数有:图像(image)、区域(region)和轮廓(XLD) 4、控制参数有:…...

数据库系统概论:事务与并发一致性问题

随着网络应用的普及,数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面,旨在提高系统的吞吐量和响应时间,以满足多用户同时访问数据库的需求。然而,这…...

Python编程基础:元组类型、字典类型、集合类型

目录 元组类型创建/删除元组访问/操作元组元组生成式字典类型创建/删除字典访问/操作字典字典相关函数集合类型创建/删除集合集合相关操作符访问/操作集合元组类型 元组是Python中内置的不可变序列,这是它跟列表的不同之处,它没有一系列增删改等操作,只可以使用索引和for循环…...

day2 单机并发缓存

文章目录 1 sync.Mutex2 支持并发读写3 主体结构 Group3.1 回调 Getter3.2 Group 的定义3.3 Group 的 Get 方法 4 测试 本文代码地址: https://gitee.com/lymgoforIT/gee-cache/tree/master/day2-single-node 本文是7天用Go从零实现分布式缓存GeeCache的第二篇。 …...

ECMP等价多路由机制,大模型训练负载均衡流量极化冲突原因,万卡(大规模)集群语言模型(LLM)训练流量拥塞特点

大规模集群,大语言模型(LLM)训练流量特点,ECMP(Equal-Cost Multi-Path Routing)流量极化拥塞原因。 视频分享在这: 2.1 ECMP等价多路由,大模型训练流量特点,拥塞冲突极化产生原因_哔哩哔哩_bi…...

Linux 注意事项

Linux 与 Windows 是两个相互独立的操作系统,两者有较大差距: 1.1 Linux 严格区分大小写(Windows不严格区分大小写); 1.2 Linux 中所有内容,硬件设备都以文件形式保存在 /dev 目录下(万物皆文件…...

力扣SQL50 指定日期的产品价格 双重子查询 coalesce

Problem: 1164. 指定日期的产品价格 coalesce 的使用 简洁版 &#x1f468;‍&#x1f3eb; 参考题解 select distinct p1.product_id,coalesce((select p2.new_pricefrom Products p2where p2.product_id p1.product_id and p2.change_date < 2019-08-16order by p2.…...

MySQL8的备份方案——全量(完全)备份(CentOS)

MySQL8的全量备份 一、安装备份工具二、备份数据三、恢复备份 点击跳转增量备份 点击跳转差异备份 点击跳转压缩备份 一、安装备份工具 官网 下载地址 备份所用工具为percona-xtrabackup 如果下方安装工具的教程失效&#xff0c;请点击上方下载地址转到官方文档查看 下载该工…...

JVM监控及诊断工具-命令行篇--jcmd命令介绍

JVM监控及诊断工具-命令行篇5-jcmd&#xff1a;多功能命令行 一 基本情况二 基本语法jcmd -ljcmd pid helpjcmd pid 具体命令 一 基本情况 在JDK 1.7以后&#xff0c;新增了一个命令行工具jcmd。它是一个多功能的工具&#xff0c;可以用来实现前面除了jstat之外所有命令的功能…...

c++信号和槽机制的轻量级实现,sigslot 库介绍及使用

Qt中的信号与槽机制很好用&#xff0c;然而只在Qt环境中。在现代 C 编程中&#xff0c;对象间的通信是一个核心问题。为了解决这个问题&#xff0c;许多库提供了信号和槽&#xff08;Signals and Slots&#xff09;机制。今天推荐分享一个轻量级的实现&#xff1a;sigslot 库。…...

云原生项目纪事系列 - 项目管理的鲜活事例

大规模云原生系统的新颖性、建设性和挑战性&#xff0c;吸引着许多有数学思想、哲学意识和美学观念的系统架构师&#xff0c;老模也是其中一员。 老模即是文史家庭出身&#xff0c;又有理工学业背景&#xff0c;他基于平时记录的翔实细节&#xff0c;秉持客观原则&#xff0c;使…...

【Vite】快速入门及其配置

概述 Vite是前端构建工具。vite 相较于webpack,vite采用了不同的运行方式&#xff1a; 开发时&#xff0c;并不对代码打包&#xff0c;而是直接采用ESM的方式来运行项目在项目打包部署时&#xff0c;使用 rollup 对项目进行打包除了速度外&#xff0c;vite使用起来也更加方便…...

Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线

本文给大家列出了Arm架构的学习大纲、学习方法、自学路线、付费学习路线。有兴趣的可以关注&#xff0c;希望对您有帮助。 如果大家有需要的&#xff0c;欢迎关注我的CSDN课程&#xff1a;https://edu.csdn.net/lecturer/6964 ARM 64位架构介绍 ARM 64位架构介绍 ARM架构概况…...

vue 中 ui 组件二次封装后 ref 怎么穿透到子组件里

情景&#xff1a;element-ui 二次封装了 el-table 组件&#xff0c;使用封装组件时&#xff0c;想要调用 el-table 组件内置的一些方法。只在封装组件上定义 ref 是拿不到 el-table 内置方法的。解决方法如下。 1. vue2 封装组件 <template><el-table ref"inn…...

sourcetree中常用功能使用方法及gitlab冲突解决

添加至缓存&#xff1a;等于git add 提交&#xff1a;等于git commit 拉取/获取&#xff1a;等于git pull ,在每次要新增代码或者提交代码前需要先拉取一遍服务器中最新的代码&#xff0c;防止服务器有其他人更新了代码&#xff0c;但我们自己本地的代码在我们更新前跟服务器不…...

SQL Server分布式查询:跨数据库的无缝数据探索

SQL Server分布式查询&#xff1a;跨数据库的无缝数据探索 在当今的企业环境中&#xff0c;数据往往分散在不同的数据库和服务器上。SQL Server的分布式查询功能提供了一种强大的手段&#xff0c;允许用户编写单一的查询来访问和操作分散在不同SQL Server实例中的数据。本文将…...

网站建设与搜索/广告推销

为什么80%的码农都做不了架构师&#xff1f;>>> <?xml version"1.0" encoding"UTF-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/empty_cart_view"android:…...

广州seo网站推广优化/今日头条新闻在线看

什么是索引覆盖就是select的数据列只用从索引中就能够取得&#xff0c;不必读取数据行&#xff0c;换句话说查询列要被所建的索引覆盖。那么显然select * from ...是一种拙劣的查询&#xff0c;除非你建立了包含所有列的索引&#xff08;这样建索引脑子进水&#xff09;。对 于…...

深圳网站建设10086/qq群引流推广平台免费

我们踩着的只是两个脚印&#xff0c;我们看到的只是四角的天空。究竟是什么决定了我们能不能找到工作&#xff0c;找到什么样的工作。以下引用的文献&#xff0c;皆来自《社会学与中国社会》中的收录。这些被收录在这里的文献&#xff0c;好像是作者专门为收集到此书时加工的&a…...

网站的布局有哪些/建一个网站大概需要多少钱

github文档地址&#xff1a; https://github.com/yimijianfang/vue-drag-verify 转载自&#xff08;http://www.jq22.com/jquery-info22779&#xff09;注意用的时候需要对父元素或html设置 user-select: none 效果1 实现方法 1 新建一个 vue 文件 将以下代码复制进去 <…...

网站建设公司要求什么/chrome浏览器官网入口

一、 打开终端&#xff08;Terminal&#xff09;下载源码&#xff1a; git clone https://github.com/Sunnyyoung/WeChatTweak- - macOS.git进入目录&#xff1a;cd WeChatTweak-macOS编译安装&#xff1a;sudo make install卸载动态库 sudo make uninstall打开微信客户端 二…...

wordpress 商品采集/专业精准网络营销推广

1&#xff1a;在dos下执行jar&#xff0c;根据入参和引用第三方jar的操作 测试类&#xff1a; 打成jar包&#xff1a;encryptPwdForCIP.jar 测试&#xff1a;目录结构如下 lib文件夹下放入jar&#xff1a; 在lib同路径下执行dos 命令&#xff1a; 解释命令&#xff1a;java -cp…...