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

浅谈Open.Json.pickle.Os

一、Open函数使用

open函数是 Python 中用于打开文件的内置函数,它返回一个文件对象,该文件对象提供了对文件进行读写操作的方法。使用 open 函数时,通常需要指定至少两个参数:文件名(file)和模式(mode)。模式决定了文件是以只读、只写、追加、读写等哪种方式被打开的。

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

file:必需,文件路径(相对或绝对路径)。

mode:可选,文件打开模式。默认为 'r',即只读模式。其他常用模式包括 'w'(只写,文件存在则覆盖)、'a'(追加,写入的数据会被追加到文件末尾)、'r+'(读写)等。

buffering:可选,设置缓冲策略。

encoding:可选,用于指定文件的编码方式,如 'utf-8'。

errors:可选,指定编码和解码错误时的处理方式。

newline:可选,控制跨平台行尾符的行为。

closefd:可选,如果文件描述符是用 os.open() 打开的,并且传递给了 open()closefd 应该为 False,否则 open() 关闭文件时也会关闭文件描述符。

opener:可选,一个可调用对象,用于打开文件(通常是底层系统调用),通常不需要。

读取文件

# 打开文件并读取内容  
with open('example.txt', 'r', encoding='utf-8') as file:  content = file.read()  print(content)  # 使用with语句可以自动管理文件的打开和关闭

 写入文件

# 打开文件并写入内容  
with open('output.txt', 'w', encoding='utf-8') as file:  file.write('Hello, World!')  # 如果文件已存在,'w' 模式会覆盖原有内容

 追加内容到文件

# 打开文件并追加内容  
with open('output.txt', 'a', encoding='utf-8') as file:  file.write('\nAnother line.')  # 'a' 模式会在文件末尾追加内容,不会覆盖原有内容

读写文件

# 打开文件进行读写  
with open('example.txt', 'r+', encoding='utf-8') as file:  content = file.read()  print(content)  file.write('\nSome new content.')  # 注意:'r+' 模式时,如果文件不存在会抛出 FileNotFoundError

二、Json与pickle

序列化,将python数据结构 转换为字符串;反序列化,将字符串 转换为python数据结构 方便解析。

json是一种轻量级数据格式,适用与所有编程语言。

json序列化

1.方式一:dumps,第一步,序列化成字符串,第二步,将字符串写入文件。

datas = {"user": [{"id": 101, "un": "张三", "pwd": "123456"}],"student": [],"z": None
}
datas_str = json.dumps(datas)
with open("./示例.txt", 'w') as f:f.write(datas_str)

2.方式二:dump,一步完成,把序列化结果写入文件‘。

with open("./示例.txt", 'w') as f:json.dump(datas, f)

 json反序列化

1.方式一:loads,第一步,读取文件内容,返回字符串,第二步,将字符串反序列化为python数据结构。

with open("./data.txt", "r") as f:datas = json.load(f)first_user = datas["user"][0]print(first_user.get("un"), first_user.get("pwd"))

2.方式二:load,一步完成,把文件内容反序列化成python数据结构。

with open("./data2.txt", "rb") as f:data = pickle.load(f)

三、Os模块

Os模块全称操作系统模块。

相关指令:

os.curdir:当前路径

import osprint(os.curdir)
#结果:.

os.pardir:上级路径

import osprint(os.aprdir)
#结果:..

os.chdir:更改路径

os.listdir:当前路径下文件信息

import os
print(os.listdir("d:\\测试文件"))
#结果:['01.txt', '21.txt']

os.mkdir:创建文件夹

import os
os.mkdir("d:\\测试文件\\创建文件夹测试")

 

os.rmdir:删除文件夹

import os
os.rmdir("d:\\测试文件\\创建文件夹测试")

 

os.cpu.count:cpu核心参数

import os
print(os.cpu_count())
#结果:4

os.path模块

os.path.exists:路径或者文件是否存在(返回True或False)

import os
print(os.path.exists("d:\\测试文件"))
#结果:True

os.path.isfile:是否为文件(返回True或False)

import os
print(os.path.isfile("d:\\测试文件\\01.txt"))
#结果:True

os.path.isdir:是否为路径(返回True或False)

import os
print(os.path.isdir("d:\\什么文件"))
#结果:False

os.path.split:分割最后一部分和前面路径

import os
print(os.path.split("d:\\测试文件\\测试文件2\\01.txt"))
#结果:('d:\\测试文件\\测试文件2', '01.txt')

os.path.join:将多个部分组合成一个路径

import os
path = os.path.join("d:", "one", "two", "tree.txt")

os.path.abspath:绝对路径,abspath(os.curdir)

import os
print(os.path.abspath("d:\\测试文件\\创建文件夹测试"))
#结果:d:\测试文件\创建文件夹测试

os.path.dirname:当前路径的父路径

import os
print(os.path.dirname("d:\\测试文件\\创建文件夹测试"))
#结果:d:\测试文件

__file__:获取当前文件

import os
print(os.path.dirname(__file__))

总结

Open.Json.pickle.Os是python开发过程中比较核心的内容。我们在学习过程中应当更加注意!

制作不易,多多点赞收藏支持哦!♥

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaEE:Lombok工具包的使用以及EditStarter插件的安装
  • 大语言模型在病理AI领域中的应用2|文献速递·24-07-18
  • 2024717-VSCode-1.19.1-部署gcc13-C++23-win10-22h2
  • 第122天:内网安全-域信息收集应用网络凭据CS 插件AdfindBloodHound
  • 使用Redis的SETNX命令实现分布式锁
  • 科普文:微服务技术栈梳理
  • 详细讲解下 算法中的 堆栈
  • 提示工程的技术与策略分类
  • 贪心算法(2024/7/16)
  • 从0到1搭建数据中台(4):neo4j初识及安装使用
  • Golang 创建 Excel 文件
  • PlantUML-UML 绘图工具安装、Graphviz安装、本地使用/在线使用、语法、图示案例
  • 源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)
  • Java毕业设计 基于SpringBoot的景区行李寄存管理系统
  • 【Django】网上蛋糕商城后台-类目管理
  • SegmentFault for Android 3.0 发布
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • chrome扩展demo1-小时钟
  • cookie和session
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ES6语法详解(一)
  • interface和setter,getter
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • jdbc就是这么简单
  • js面向对象
  • 当SetTimeout遇到了字符串
  • 工程优化暨babel升级小记
  • 规范化安全开发 KOA 手脚架
  • 微信小程序填坑清单
  • 线上 python http server profile 实践
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • # Apache SeaTunnel 究竟是什么?
  • ## 1.3.Git命令
  • #android不同版本废弃api,新api。
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $(selector).each()和$.each()的区别
  • (10)ATF MMU转换表
  • (2)STL算法之元素计数
  • (21)起落架/可伸缩相机支架
  • (floyd+补集) poj 3275
  • (java)关于Thread的挂起和恢复
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (搬运以学习)flask 上下文的实现
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • ****三次握手和四次挥手
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .ai域名是什么后缀?
  • .NET Core 中插件式开发实现
  • .Net Core中Quartz的使用方法
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net多线程总结
  • :中兴通讯为何成功