python 文件操作-2

news/2024/4/28 23:15:51/文章来源:https://blog.csdn.net/rx3225968517/article/details/137107560

目录

文件读写

读写文件

python文件练习-1

读写 JSON 文件

python文件练习-2


文件读写

读写文件

写入文件

Python 的 write() 方法用于向文件中写入指定字符串。

在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。

如果文件打开模式带 b,那写入文件内容时,str(参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str'

语法: write() 方法语法如下:

fileObject.write([str])

参数: str:要写入文件的字符串。

返回值:

返回的是写入的字符长度。

实例:

将字符串 flag 写入 shell.txt文件

with open('shell.txt', 'w') as f:length = f.write("flag")print(length) # 4'''
1. with open('shell.txt', 'w') as f: :这一行代码使用了 Python 的上下文管理器 (`with`) 来打开文件 'shell.txt' 以供写入,
文件模式为 'w',表示写入模式。使用上下文管理器可以确保在代码块执行完毕后,文件被正确关闭,即使发生异常也不例外。2. length = f.write("flag"):这一行代码将字符串 `"flag"` 写入文件 `'shell.txt'` 中,并返回写入的字符数,这个字符数被赋值给变量 `length`。3. print(length):这一行代码打印了变量 `length` 的值,即写入到文件中的字符数。综上所述,代码的作用是打开一个文件 'shell.txt' 以写入模式,将字符串 "flag" 写入文件,并打印出写入的字符数。
'''

读取文件

Python 的 read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。

语法

read() 方法语法如下:

fileObject.read([size]); 

参数:

  • size:从文件中读取的字节数,默认为 -1,表示读取整个文件。

返回值:

返回从字符串中读取的字节。

实例:

读取 shell.txt 文件中的所有内容。

with open('shell.txt', 'w') as f:f.write("flag")with open('shell.txt', 'r') as f:read_1 = f.read()print(read_1)'''
首先使用写入模式 ('w') 打开文件 'shell.txt',然后向文件中写入字符串 "flag"。接着,它再次打开同一个文件,但这次是以读取模式 ('r')。在读取模式下,
它读取文件的全部内容,并将其存储在变量 `read_1` 中,最后,它打印出变量 `read_1` 的值,即文件中的内容。因此,如果文件 'shell.txt' 不存在,它将被创建并写入字符串 "flag",然后代码将读取该文件的内容并打印出来。
如果文件已经存在并且有内容,它将被覆盖为 "flag",然后读取并打印出来。
'''

python文件练习-1
向文件里写入列表描述
给定一个文件路径 path,一个列表 list_1,请你向文件里写入这个列表。
def write_list(path: str, list_1: list):with open(path,'w') as f:f.write(str(list_1))f.close()# 可写可不写'''
函数名为 `write_list`,接受两个参数:1. `path`:表示要写入列表的文件路径的字符串。
2. `list_1`:要写入文件的列表。下面是函数的具体操作:- 使用`open()`函数以`'w'`模式打开由`path`参数指定的文件,这意味着它打开文件以进行写入操作。如果文件不存在,则会创建它。如果文件已存在,则其内容将被覆盖。
- 然后使用文件对象 `f` 的 `write()` 方法将 `list_1` 的字符串表示写入文件。使用 `str()` 函数将列表转换为字符串,因为 `write()` 方法只能将字符串写入文件。
- 最后,使用 `close()` 方法显式关闭文件。虽然在这种情况下,由于使用了 `with` 语句,它会在退出块时自动关闭文件,调用 `f.close()` 是多余的,可以省略。
因此,当我们用文件路径和列表调用这个函数时,它会将列表的字符串表示写入指定的文件中。
'''

读写 JSON 文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括 C、C++、Java、JavaScript、Perl、Python等)。这些特性使 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 在 Python 中分别由 listdict 组成。

json 模块提供了四个功能:dumpsdumploadsload

  • dumps 把数据类型转换成字符串
  • dump 把数据类型转换成字符串并存储在文件中
  • loads 把字符串转换成数据类型
  • load 把文件打开从字符串转换成数据类型

写入 JSON 文件

简介

Python 模块中的 json 模块提供了一个名为 dump() 的方法,它将 Python 对象转换为适当的 JSON 对象。它是 dumps() 方法的一个小变种。

dump()** 和 dumps() 的区别**

dump()dumps()
当 Python 对象必须被存储在一个文件中时,dump() 方法就会被使用。dumps() 是在要求对象为字符串格式时使用的,用于解析、打印等。
dump() 需要将输出的 JSON 文件名作为一个参数来存储。dumps() 并不要求传递任何这样的文件名。
这种方法在内存中写入,然后单独执行写入磁盘的命令。这个方法直接写到 JSON 文件中
较快的方法慢 2 倍

dump()** 语法:** json.dump(d, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None)

参数

  • indent:它提高了 JSON 文件的可读性。可以传递给这个参数的可能值是简单的双引号(""),任何整数值。简单的双引号使每个键值对出现在新的一行。
  • skipkeys:如果键不属于标准允许的类型,如 intfloatstringNonebool,在转储它们时将产生错误。
  • separator:这个参数有一个或两个值。第一个值指定将一个键值对与另一个键值对分开的符号。下一个值指定将值和它的键分开的符号。
  • sort_keys:这个参数采用布尔值。如果它被设置为 True,键将以升序设置,否则,它们将以 Python 对象的形式出现。
  • ensure_ascii:这个参数也只取布尔值。如果它没有被设置为 True,非 ASCII 字符将被原封不动地转入输出文件。默认情况下,该值为 True
  • allow_nan:它有助于序列化浮点数的范围。

实例

# 写入 JSON 数据
import jsondata = {'name': 'flag','age': 8
}
with open('demo.json', 'w') as f:json.dump(data, f)'''
import json: 这一行导入了Python的内置模块json,该模块允许我们操作JSON格式的数据。data = {'name': 'flag', 'age': 8}: 这行定义了一个Python字典对象data,其中包含了两个键值对,一个是name,对应的值是字符串'flag',另一个是age,对应的值是整数8。with open('demo.json', 'w') as f:: 这行代码打开了一个名为demo.json的文件,并且以写入模式(‘w’)打开。with语句是Python中用来处理文件IO的一种推荐方式,
它会在代码块执行完毕后自动关闭文件,无需手动调用f.close()。json.dump(data, f): 这行代码使用了json.dump()函数,它接受两个参数:要序列化的Python对象(在这里是字典data),以及一个文件对象(在这里是f)。
它会把Python对象序列化为JSON格式的数据,并将其写入到文件对象对应的文件中。整个代码的作用就是将Python字典对象data转换为JSON格式的数据,并写入到名为demo.json的文件中。'''

读取 JSON 文件

json.loads() 方法可用于解析有效的 JSON 字符串并将其转换为 Python 字典。它主要用于将 JSON 数据组成的原生字符串、字节或字节数组反序列化为 Python 字典。

语法: json.loads(s) 参数: 它采用字符串、字节或字节数组实例,其中包含 JSON 文档作为参数。 返回: 它返回一个 Python 对象。

示例

读取 demo.json 的中的内容

# 写入 JSON 数据
import jsondata = {'name': 'flag','age': 8
}
with open('demo.json', 'w') as f:json.dump(data, f)# 读取文件
# load() 方法
with open('demo.json', 'r') as f:print(json.load(f))# loads() 方法
with open('demo.json', 'r') as f:print(json.loads(f.read()))'''
json.load(f) 方法。这个方法接受一个文件对象作为参数,从中读取 JSON 数据并将其解析为 Python 对象。
在这里,`f` 是之前打开的文件对象,通过 `json.load(f)` 将文件中的 JSON 数据加载到内存中,并返回对应的 Python 对象,最后通过 `print()` 打印出来。json.loads(f.read()) 方法。首先,`f.read()` 读取了文件的内容作为字符串,然后 `json.loads()` 方法将这个字符串解析为 Python 对象。
与第一种方法不同,这里并没有直接传递文件对象给 `json.loads()`,而是将文件内容先读取到内存中,再进行解析。最后同样通过 `print()` 打印出解析后的 Python 对象。'''

python文件练习-2
从文件中读取字典并修改它描述
给定一个文件路径 path,文件格式为 json,请你将文件里的数据转换为字典,并修改其中 age 属性,将其改成 18,然后将修改后的字典写回文件里。
import json  # 导入json包def get_write_dict(path: str):  # 定义函数,将路径作为参数带入with open(path, 'r') as f:  # 读取JSON文件并且将其解析成字典data = json.load(f)  # 调用json.load()方法,将数据转换为字典data['age'] = 18  # 修改 age 属性with open(path, 'w') as f:json.dump(data, f)  # 将修改后的字典重新写入到文件

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

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

相关文章

阿里云OSS存储的视频如何加水印

OSS是不能进行视频添加水印的,可以图片添加水印。 您可以在视频点播中进行配置: https://help.aliyun.com/zh/vod/user-guide/video-watermarks?spma2c4g.11186623.0.i2 原来的业务代码都是使用python 对oss的 视频进行上传 的,上传的视频路径已经保存到…

小米汽车正式发布:开启智能电动新篇章

随着科技的不断进步,汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向,正吸引着越来越多的目光。在这个充满机遇和挑战的时代,小米汽车凭借其卓越的技术实力和深厚的市场底蕴,终于迈出了坚实的一步。今天&…

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议) 本文目的前置知识点TCP协议简介主要特性通信流程1. 建立连接的过程(三次握手,243)1.1 为什么要三次握手,两次不行吗? 2. 释放连接的过程(…

Java基础语法(二)

前言 Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~ 1. 类型转换 1.1 自动类型转换 什么是自…

RabbitMQ3.x之三_RabbitMQ新建用户及开启远程访问

RabbitMQ3.x之三_RabbitMQ新建用户及开启远程访问 文章目录 RabbitMQ3.x之三_RabbitMQ新建用户及开启远程访问1. guest不能远程访问2. 创建专有用户远程访问RabbitMQ1. 创建用户2. 给用户分配tag(角色)3. 开启远程访问 3. 新用户远程登录 1. guest不能远程访问 在 RabbitMQ 中&…

网络爬虫框架Scrapy的入门使用

Scrapy的入门使用 Scrapy概述引擎(Engine)调度器(Scheduler)下载器(Downloader)SpiderItem Pipeline 基本使用安装scrapy创建项目定义Item数据模型对象创建爬虫(Spider)管道pipeline来保存数据启动爬虫 其他…

利用lidar生成深度图

前言 目前,深度图像的获取方法有:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法等。针对深度图像的研究重点主要集中在以下几个方面:深度图像的分割技术,深度图像的边缘检测技术,基于…

python的神奇bug2

今天测试出一个很诡异的bug, 这个错误还真的很难发现 测试1 a [1,10,100] for i in a:print(i)if(i10):a[20,30,-1]一般来说我们在进行迭代时,a这个值时不能改动的,但是现在的问题时如果我不小心给改动了呢,结果如下 也就是说…

文本文件操作

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 文件操作 程序运行时&#xff0c;产生的数据都是临时数据&#xff0c;程序一旦运行结束都会被释放。通过文件可以将数据持久化。 C中对文件进行操作需要包含头文件<fstream> 文件…

关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?

文章目录 PyTorch 项目分析1.背景2.分析流程 PyTorch 项目分析 1.背景 当我们拿到一个 PyTorch 的深度学习项目时&#xff0c;应该怎么入手&#xff1f;怎么去查看代码&#xff1f; 2.分析流程 首先阅读对应项目的 README.md 文件。通过阅读 README.md &#xff0c;一般可以…

【Redis面试题】Redis 的大 Key 对持久化有什么影响?

目录 大 Key 对 AOF 日志的影响大 Key 对 AOF 重写和 RDB 的影响总结 Redis 的持久化方式有两种&#xff1a;AOF 日志和 RDB 快照。 所以接下来&#xff0c;针对这两种持久化方式具体分析分析。 大 Key 对 AOF 日志的影响 先说说 AOF 日志三种写回磁盘的策略 Redis 提供了 3 …

记录在项目中引用本地的npm包

1、先把需要的包下载下来&#xff0c;以Photo Sphere Viewer 为引用的npm包、项目以shpereRepo为例子 git clone https://github.com/mistic100/Photo-Sphere-Viewer2、拉下代码后修改之后执行 ./build.sh build.sh #!/usr/bin/env bashyarn run build targetDir"../sh…

HarmonyOS 应用开发之UIAbility组件间交互(设备内)

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时&#xff0c;会涉及到启动特定的UIAbility&#xff0c;该UIAbility可以是应用内的其他UIAbility&#xff0c;也可以是其他应用的UIAbility&#xff08;例如启动三方支付UIAbility&#xff09;。 本文将从如下场景…

Etcd 基本入门

1&#xff1a;什么是 Etcd ? Etcd 是 CoreOS 团队于2013年6月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法&#xff0c;Etcd基于 Go 语言实现。 名字由来&#xff0c;它源于两个方面&#xff0c;…

面试笔记——MyBatis(执行流程、延迟加载和缓存)

MyBatis 是一个持久层框架&#xff0c;用于简化 Java 应用程序与数据库之间的交互过程。具体而言&#xff0c;它提供了一种将数据库操作映射到 Java 方法的方式&#xff0c;通过 XML 文件或注解配置 SQL 语句与 Java 方法的映射关系。使用 MyBatis&#xff0c;开发人员可以通过…

YOLOV8逐步分解(2)_DetectionTrainer类初始化过程

接上篇文章yolov8逐步分解(1)--默认参数&超参配置文件加载继续讲解。 1. 默认配置文件加载完成后&#xff0c;创建对象trainer时&#xff0c;需要从默认配置中获取类DetectionTrainer初始化所需的参数args&#xff0c;如下所示 def train(cfgDEFAULT_CFG, use_pythonFalse…

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…

Elasticsearch从入门到精通-07ES底层原理学习

Elasticsearch从入门到精通-07ES底层原理和高级功能 &#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是程序员行走的鱼 &#x1f4d6; 本篇主要介绍和大家一块学习一下ES底层原理包括集群原理、路由原理、分配控制、分配原理、文档分析原理、文档并发安全原理以及一些高…

第十四届蓝桥杯JavaA组省赛真题 - 特殊日期

解题思路&#xff1a; 暴力秒了 public class Main {public static void main(String[] args) {int cnt 0;for (int i 1900; i < 9999; i) {for (int j 1; j < 12; j) {for (int k 1; k < days(i, j); k) {if (sum(i) sum(j) sum(k)) cnt;}}}System.out.print…

算法笔记~—位运算

目录 常见位运算&#xff1a; 1、基础位运算 2、对于一个数n。确定、修改这个数n二进制x位。 3、提取&#xff08;确定&#xff09;一个数n最右侧的1&#xff08;bit&#xff09;与干掉最右侧的1&#xff08;bit&#xff09; 4、异或运算律 5、位运算的优先级&#xff1a…