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

Python 文件操作指南:使用 open 和 with open 实现高效读写

🍀 前言

博客地址:

  • CSDN:https://blog.csdn.net/powerbiubiu

👋 简介

本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CSV、JSON、XML 等,以及如何使用相应的 Python 库来处理这些文件格式,同时对数据进行持久化操作。本章节就从最常见的TXT文件开始。

📖 正文

1 open

文件准备

春眠不觉晓
处处闻啼鸟
迎来风雨声
花落知多少
1.1 读取文件内容
f = open('test.txt', 'r', encoding='utf-8')
res = f.read()
print(res)
f.close()#春眠不觉晓
#处处闻啼鸟
#迎来风雨声
#花落知多少

Tips:
读取文件的时候,这个文件必须存在,否则会抛异常

1.1 内容写入文件

在对文件写入内容的时候,若指定的文件不存在,则会自动创建

f = open('test1.txt', 'w', encoding='utf-8')
s = '春眠不觉晓\n处处闻啼鸟\n迎来风雨声\n花落知多少\n'
f.write(s)
f.close()

但是存在一个问题,如果在执行一次以上代码,文件中的内容被覆盖了,没有实现追加,如果需要实现对文件内容的追加,需要指定参数mode的值为a才能实现追加功能

f = open('test1.txt', mode='a', encoding='utf-8')
s = '春眠不觉晓\n处处闻啼鸟\n迎来风雨声\n花落知多少\n'
f.write(s)
f.close()
1.3 模式详解
mode含义
r只读的方式打开文件,文件指针在文件的开头
r+读写的方式打开文件,文件指针在文件的开头
w打开一个文件只用于写入,并从头开始编辑,原有内容会被删除
w+打开一个文件用于读写,并从头开始编辑,原有内容会被删除
a打开一个文件用于追加,文件指针在文件结尾
a+打开一个文件用于读写,文件指针在文件结尾

这里不涉及对二进制的操作,所以只列举文本操作使用的mode参数。

1.4 文件读写方法
  • f.read():一次性读取所有内容
  • f.readline():按行读取,一次读取一行内容
  • f.readlines():返回一个列表,列表中每个元素就是一行内容
  • f.readable():判断文件是否可读,可读返回True,否则返回False
  • f.write(s):将s写入文件
  • f.seek(0):将文件指针移到文件开头,可以在支持读写的情况下使用,先下如内容,然后将文件指针指向开头,在读取文件内容
1.5 上下文管理

使用方法和open一样,这种是通过上下文管理器的方式进行文件读写,在结束后,可以省略close操作,一搬正常情况下,可以使用with open进行操作
只读模式

with open('test.txt', 'r') as f:content = f.read()

只写模式

with open('test.txt', 'w') as f:f.write('Hello, World!')

追加模式

with open('test.txt', 'a') as f:f.write('append Hello, World!')

2 封装工具类

使用场景:假设需要对人的姓名,年龄,性别信息进行保存,通过txt文件进行存储。

import os.pathclass FileTools:def __init__(self, file: str, sp: str = ','):"""初始化:param file: 文件:param sp: 分割字符,默认逗号,"""if not os.path.exists(file):# 文件不存在,创建文件with open(file, 'w') as f:passself.file = fileself.sp = spdef read(self) -> list:"""读取所有内容,返回列表:return:"""with open(self.file, 'r+', encoding='utf-8') as f:content = f.readlines()return [i.strip().split(self.sp) for i in content]def append(self, *args) -> None:"""追加写入:param content::return:"""try:with open(self.file, 'a+', encoding='utf-8') as f:if len(args) == 1:f.write(args[0] + '\n')else:f.write(self.sp.join(args) + '\n')except TypeError as e:print(f"写入文件异常:{e}")if __name__ == '__main__':ft = FileTools('users.txt')ft.append('张三', '19', '男')ft.append('李四', '20', '女')print(ft.read())# [['张三', '19', '男'], ['李四', '20', '女']]

这里通过不定长参数args来接收需要写入的内容,通过初始化默认的,来进行拼接,所以当添加了两条数据后,文件中的内容如下:

张三,19,男
李四,20,女

然后读取的时候,同样通过默认的,进行分割处理,将结果通过列表嵌套列表返回

✏ 总结

with open文件操作,更多的是文件进行读与写的操作,并不支持更新删除功能,这需要通过读取所有内容,来筛选数据进行删除,更新,然后再将数据覆盖原文件,这种操作属于数据库增删改查功能。

💖 欢迎关注我的公众号

在这里插入图片描述

相关文章:

Python 文件操作指南:使用 open 和 with open 实现高效读写

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CS…...

FasterNet代码阅读

FasterNet 类参数初始化 将图像切分为非重叠的图像块 PatchEmbed 类 将图像分解为非重叠的图像块有以下几个好处: 1. 缩小计算量:对于大尺寸的图像,直接对整个图像进行处理可能会导致计算和内存消耗过大。将图像切分为小块可以降低计算量…...

Rust开源Web框架Salvo源码编译

1.克隆源码: https://github.com/salvo-rs/salvo.git 2.进入salve目录并运行cargo build编译 编译成功 3.编译生成的库 4.安装salve-cli git clone --recursive https://github.com/salvo-rs/salvo-cli.git 编译salve-cli...

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现

一.项目介绍 本系统分为 后端 和 小程序端 后端:点击登录按钮 设置个人中心、 管理员账号数据维护、 基础数据维护、 短视频信息维护(包括查看短视频留言、短视频收藏)、 论坛维护(增删改查帖子信息,包括查…...

TCP—三次握手和四次挥手

目录 一、三次握手和四次挥手的目的 二、TCP可靠的方面 三、什么是三次握手 四、第三次握手的目的 五、什么是四次挥手 六、超时时间的目的 七、SYN包、ACK包、FIN包 八、解决丢包和乱序 九、参考资料 一、三次握手和四次挥手的目的 TCP三次握手的目的主要是为了确保两…...

基于UDP的网络聊天室

一.项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 二.服务器端 #include <myhead.h&…...

数组-两个升序数组中位数

一、题目描述 二、解题思路 (一).基本思想&#xff1a; 如果列表总长度allsize( arr1.size()arr2.size() ) 为奇数时&#xff0c;中位数位置应该在两个列表排序后的第 allsize/2 位置处&#xff0c;如果allsize为偶数&#xff0c;中位数应该取 (allsize/2)-1 和 allsize/2 的…...

每日一题《leetcode--116.填充每个结点的下一个右侧结点》

https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/ 题目要求给每个结点的next指针进行填充&#xff0c;使每个结点的next指针指向其下一个右侧结点。如果右侧没有结点&#xff0c;则将next指针设置为空。 struct Node* connect(struct Node* root) {…...

【MySQL精通之路】InnoDB(6)-磁盘结构(5)-Redolog

主博客&#xff1a; 【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】InnoDB-双写缓冲区-CSDN博客 下一篇: 目录 1.配置Redo Log容量&#xff08;MySQL 8.0.30或更高版本&#xff09; 2.配置重做日志容量&#xff08;MySQL…...

【探索自然语言处理:构建一个简单的文本分类器】

文章目录 前言文本预处理特征提取模型训练文本分类结论 前言 在信息时代&#xff0c;文本数据无处不在&#xff0c;从社交媒体帖子到客户反馈&#xff0c;文本是沟通和信息交流的主要媒介。自然语言处理&#xff08;NLP&#xff09;是人工智能的一个分支&#xff0c;它使计算机…...

概率论统计——大数定律

大数定律 弱大数定律&#xff08;辛钦大数定律&#xff09; 利用切比雪夫不等式&#xff0c;证明弱大数定律 应用 伯努利大数定理&#xff0c;&#xff08;辛钦大数定理的推论&#xff09; 证明伯努利大数定理 注意&#xff1a;这里将二项分布转化成0,1分布来表示&#xff0c;…...

vscode终端命令行前面出现两个conda环境名的问题决解方法

已经安装了conda&#xff0c;打开vscode的terminal时&#xff0c;命令行前面有两个虚拟环境名。 进入vscode的setting 找到Python->Python:Default Interpreter Path&#xff0c;把这个值复位&#xff0c;就可以解决。 如果不想前面带(base)&#xff0c;可以运行 conda co…...

“AI黏土人”一夜爆火,图像生成类应用应该如何长期留住用户?

文章目录 最近大火的“AI黏土人”&#xff0c;一股浓浓的《小羊肖恩》风。 凭借这这种搞怪的风格&#xff0c;“AI黏土人”等图像生成类应用凭借其创新技术和市场需求迅速崛起并获得巨大关注。然而&#xff0c;要保持用户黏性并确保长期发展&#xff0c;这些应用需要采取一系列…...

【MySQL精通之路】SQL优化(1)-查询优化(12)-块嵌套循环和批处理Key访问联接

在MySQL中&#xff0c;可以使用批处理Key访问&#xff08;BKA&#xff09;联接算法&#xff0c;该算法使用对联接表的索引访问和联接缓冲区。 BKA算法支持内联接、外联接和半联接操作&#xff0c;包括嵌套的外部联接。 BKA的优点包括由于更高效的表扫描而提高了联接性能。 此…...

SQL使用函数给多个分表添加同一字段

数据库中分表时&#xff0c;往往需要向多个分表中添加同一个字段&#xff0c;可以定义一个函数&#xff0c;每次调用这个函数向多个份表中添加同意字段。 1、创建函数示例&#xff1a; 在PostgreSQL中创建一个简单的函数 以下是一个在PostgreSQL中创建函数的简单示例&#x…...

OpenAI 再次刷新认知边界:GPT-4 颠覆语音助手市场,流畅度直逼真人互动?

前言 近日&#xff0c;美国人工智能研究公司 OpenAI 发布了其最新旗舰模型 GPT-4o&#xff0c;这一革命性的进展不仅标志着人工智能领域的新突破&#xff0c;更预示着即将步入一个全新的交互时代&#xff1f;GPT-4o 的发布&#xff0c;对于我们来说&#xff0c;意味着人工智能…...

UE5 使用外置摄像头进行拍照并保存到本地

连接外置摄像头功能&#xff1a;https://docs.unrealengine.com/4.27/zh-CN/WorkingWithMedia/IntegratingMedia/MediaFramework/HowTo/UsingWebCams/ 核心功能&#xff1a;UE4 相机拍照功能&#xff08;图片保存&#xff09;_ue 移动端保存图片-CSDN博客 思路是&#xff1a; …...

【C++】从零开始map与set的封装

送给大家一句话&#xff1a; 今日的事情&#xff0c;尽心、尽意、尽力去做了&#xff0c;无论成绩如何&#xff0c;都应该高高兴兴地上床恬睡。 – 三毛 《亲爱的三毛》 &#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x…...

Python可以声明并赋值一个hash类型变量吗?

在Python中&#xff0c;不能直接声明一个变量为hash类型&#xff0c;因为Python是一种动态类型语言&#xff0c;不需要&#xff08;也不能&#xff09;在声明变量时指定其类型。变量的类型是根据赋给它的值自动推断的。 将一个哈希值&#xff08;即一个整数&#xff09;赋值给…...

苗情灾情监控系统—提高农业生产效率

TH-MQ2苗情灾情监控系统是一种用于监测农作物生长状况和灾情的设备&#xff0c;通过实时监测和数据分析&#xff0c;帮助农民及时了解作物生长情况&#xff0c;采取相应的管理措施&#xff0c;提高农业生产效率和降低生产成本。 该系统通常由多种传感器、摄像头、数据传输模块等…...

SQL 数据库从免费到付费选型实战:支撑真实规模产品的能力分析与选择指南

引言:为什么 SQL 数据库选型如此重要? 在当今数据驱动的时代,数据库是任何数字产品的核心基础设施。无论是初创公司的 MVP(最小可行产品),还是日活百万的成熟应用,数据库的选择直接影响着产品的性能、成本、可扩展性和开发效率。 对于技术决策者而言,面对琳琅满目的 …...

为ClaudeCode配置Taotoken作为备用API解决访问限制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为ClaudeCode配置Taotoken作为备用API解决访问限制 基础教程类&#xff0c;指导经常遇到ClaudeCode访问限制的开发者&#xff0c;如…...

别再死记公式了!用Python和NumPy直观理解向量模长与矩阵范数

用Python和NumPy直观理解向量模长与矩阵范数 线性代数中的向量模长和矩阵范数常被视为抽象的数学符号&#xff0c;但它们在机器学习、图像处理和科学计算中扮演着核心角色。本文将用Python代码将这些概念可视化&#xff0c;让你在交互式实践中建立直觉理解。 1. 向量模长&#…...

水壶装箱检测怎么做?一个独立开发者的实战经验

水壶装箱检测怎么做&#xff1f;一个独立开发者的实战经验 作者&#xff1a;馒头 | 离散型智能制造项目经理 MES开发2年 项目经理3年&#xff0c;主导过电子、机械行业的百万级MES项目。 独立开发过一套装箱检测系统&#xff0c;从需求分析到上线落地全程主导。 踩过的坑、走过…...

Wifite2 终极指南:快速掌握无线网络安全审计工具

Wifite2 终极指南&#xff1a;快速掌握无线网络安全审计工具 【免费下载链接】wifite2 Rewrite of the popular wireless network auditor, "wifite" 项目地址: https://gitcode.com/gh_mirrors/wi/wifite2 Wifite2 是一款功能强大的无线网络安全审计工具&…...

终极指南:如何用Pocket Sync轻松管理Analogue Pocket游戏设备

终极指南&#xff1a;如何用Pocket Sync轻松管理Analogue Pocket游戏设备 【免费下载链接】pocket-sync A GUI tool (Mac, Windows, Linux) for doing stuff with the Analogue Pocket 项目地址: https://gitcode.com/gh_mirrors/po/pocket-sync Pocket Sync是一款专为A…...

2026年企业直播平台怎么选?选型清单与避坑指南

选企业直播平台&#xff0c;99%的企业会踩这5个坑&#xff1a;首年低价续费涨价、CDN质量差导致直播卡顿、功能演示≠实际能力、售后响应慢、数据安全隐患。 本文整理了企业直播平台选型7维度、5大常见坑、5个典型场景的建议&#xff0c;以及一份可直接使用的选型检查清单。 …...

PPT怎么转PDF?一键快捷操作与全方位转换方法测评

在日常工作中&#xff0c;我们经常需要将PowerPoint演示文稿转换成PDF格式。无论是为了保证演示文件的兼容性、方便分享给他人&#xff0c;还是用于打印和存档&#xff0c;PPT转PDF都是一项必不可少的技能。本文将为你深入讲解PPT转PDF的多种方法&#xff0c;包括快捷键操作、软…...

AI如何悄然重塑日常生活:从工具到环境的四层渗透

1. 这不是未来预告&#xff0c;是此刻正在发生的日常渗透“AI正在 quietly taking over your daily life”——这句话里最值得玩味的&#xff0c;不是“AI”&#xff0c;也不是“taking over”&#xff0c;而是那个轻描淡写的quietly&#xff08;悄然地&#xff09;。它不敲锣打…...

洛雪音乐音源完全指南:免费解锁全网高品质音乐

洛雪音乐音源完全指南&#xff1a;免费解锁全网高品质音乐 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为音乐平台会员费发愁吗&#xff1f;想要免费畅听全网音乐吗&#xff1f;洛雪音乐音…...