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

news2024/9/21 2:42:33

🍀 前言

博客地址:

  • 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.path


class FileTools:

    def __init__(self, file: str, sp: str = ','):
        """
        初始化
        :param file: 文件
        :param sp: 分割字符,默认逗号,
        """
        if not os.path.exists(file):
            # 文件不存在,创建文件
            with open(file, 'w') as f:
                pass
        self.file = file
        self.sp = sp

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

💖 欢迎关注我的公众号

在这里插入图片描述

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

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

相关文章

vue 表格表头展示不下,显示。。。;鼠标悬浮展示全部

vue 表格表头展示不下&#xff0c;显示。。。&#xff1b;鼠标悬浮展示全部 <templateslot-scope"scope"slot"header"><span:title"临时证券类型"style"white-space:nowrap">{{ 临时证券类型 }}</span></templa…

老年人培聊助手:温暖心灵的智能陪伴

在快节奏的现代生活中&#xff0c;老年人常常感到孤独和寂寞。为了给他们带来更多的陪伴和温暖&#xff0c;我们推出了全新的老年人培聊助手智能体。 这款培聊助手智能体不仅是一个智能聊天工具&#xff0c;更是老年人生活中的贴心伙伴。它拥有自然流畅的语言交互能力&#xf…

一文详解SaaS增长模式:PLG、MLG、SLG哪种更适合你?

在SaaS&#xff08;软件即服务&#xff09;的领域中&#xff0c;增长策略的选择对于企业的成功至关重要。其中&#xff0c;PLG&#xff08;产品驱动增长&#xff09;、MLG&#xff08;市场驱动增长&#xff09;和SLG&#xff08;销售驱动增长&#xff09;是三种常见的策略&…

COD20使命召唤20新赛季免费玩 COD20免费体验在哪下

使命召唤20&#xff08;COD20&#xff09;的免费周已经正式启动&#xff0c;这是一个为期一周的特别活动&#xff0c;为玩家们带来了前所未有的游戏体验。在这个特殊的周期里&#xff0c;多人模式和僵尸模式将向公众免费开放&#xff0c;玩家们可以尽情地探索和体验游戏的精彩内…

PUBG绝地求生卡在初始界面 登不上去 打不开游戏的解决办法

PUBG绝地求生卡在初始界面 登不上去 打不开游戏的解决办法 吃鸡热潮依旧绝地求生PUBG可是咱们玩家的心头好啊&#xff01;不过有时候可能会遇到点小麻烦&#xff0c;比如PUBG绝地求生卡在初始界面 登不上去 打不开游戏的解决办法。小编这就给大家分享几个超实用的解决方法&…

想用Python做OCR?看看这篇文章

OCR是Optical Character Recognition的缩写&#xff0c;中文名为光学字符识别。它是一种通过计算机技术对图像或扫描文档中的文字进行识别和理解的过程。OCR技术可以将图像中的文字转换为可编辑、可搜索的文本&#xff0c;使得计算机能够理解和处理这些文字信息。 OCR技术通常…

马斯克拟打造xAI“算力超级工厂”,助力聊天机器人Grok

KlipC报道&#xff1a;马斯克计划推出xAI超级计算机&#xff0c;为下一代人工智能聊天机器人Grok提供动力&#xff0c;直言这将是一个“算力超级工厂”&#xff0c;并希望在2025年秋季之前能运行起来。 xAI是马斯克去年创立的人工智能初创公司&#xff0c;“尽可能寻求真相”、…

明日周刊-第11期

上周末去参加了软考&#xff0c;这个考试目前很热门&#xff0c;参加考试的人也非常多。笔者已经算是二战了&#xff0c;今年从笔试改革成了机考。618的购物活动也都已经开始了&#xff0c;我给狗子买了一袋进口的高端狗粮渴望&#xff0c;但是买回来发现它并不爱吃&#xff0c…

第五天 从零开始构建基于Kubernetes的DevOps平台

基于Kubernetes的DevOps平台实践 持续集成工具&#xff1a; JenkinsgitlabciTekton 本章基于k8s集群部署gitlab、sonarQube、Jenkins等工具&#xff0c;并把上述工具集成到Jenkins中&#xff0c;以Django项目和SpringBoot项目为例&#xff0c;通过多分支流水线及Jenkinsfile…

使用VUE3+TS+elementplus创建一个增加按钮

一、前言 在上一篇文章中分享了创建table的过程&#xff0c;详见&#xff08;VUE3TSelementplus创建table&#xff0c;纯前端的table&#xff09;&#xff0c;本文在创建好的table的基础上&#xff0c;再创建一个增加按钮。 二、程序展示 1、前面创建table的程序 <templ…

记一次攻防演练中的若依(thymeleaf 模板注入)getshell

记一次攻防演练中幸运的从若依弱口令到后台getshell的过程和分析。 0x01 漏洞发现 首先我会先把目标的二级域名拿去使用搜索引擎来搜索所用的搜索引擎收集到包含这个目标二级域名的三级域名或者四级域名的网站。 这样子可以快速的定位到你所要测试的漏洞资产。 1、推荐三个…

Raven2掠夺者2渡鸦2角色创建、游戏预下载、账号怎么注册教程

《渡鸦2》&#xff08;Raven 2&#xff09;是由韩国开发的一款大型多人在线角色扮演游戏&#xff08;MMORPG&#xff09;类型的手游&#xff0c;作为前作《Raven》的续集&#xff0c;继承并发展了其黑暗奇幻世界观&#xff0c;同时在游戏设计和内容上进行了大量创新。游戏预计于…

科技引领未来:高速公路可视化

高速公路可视化监控系统利用实时视频、传感器数据和大数据分析&#xff0c;通过图扑 HT 可视化展示交通流量、车速、事故和路况信息。交通管理人员可以实时监控、快速响应突发事件&#xff0c;并优化交通信号和指挥方案。这一系统不仅提高了道路安全性和车辆通行效率&#xff0…

阿里云天池AI课程证书学习计划

即日起&#xff0c;加入天池AI课程证书学习计划&#xff0c;解锁新技能&#xff0c;领取结业证书&#xff0c;我们的每一次学习、每一次成长都值得被见证&#xff01; https://tianchi.aliyun.com/specials/promotion/AICourses

【搭建大语言模型】使用LocalGPT搭建本地大语言模型服务并实现远程访问进行交互

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问&#xff0c;由于localGPT只能通过本地局域网IP地址端口号的形式访问&#xff0c;实现远程访问…

[Python]pyenv 环境配置

。pip install pyenv安装 / 去Git 下载pyenv版本安装 。安装好后控制台输入pyenv查看版本 。pyenv install --list列出所有pyenv可以支持的python版本 。pyenv install 3.9.7 安装指定的版本 。在pycharm里&#xff0c;可以选中项目&#xff0c;点击File-Settings&#xff0…

python实现输入圆的半径,自动计算周长与面积

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、实现流程 1. 用户输入 2. 数据处理 3. 计算周长和面积 4. 结果展示 三、…

yarn dev启动项目时遇到的问题

用yarn dev启动项目的时候&#xff0c;遇到了如下问题&#xff1a; 这个时候&#xff0c;我们可以这样解决&#xff1a;用nvm list 看下已安装的node版本&#xff0c;用nvm use切换一下node版本&#xff0c;当然前提是你已经安装了nvm。

Windows系统使用Docker部署Focalboard团队协作工具详细流程

文章目录 前言1. 使用Docker本地部署Focalboard1.1 在Windows中安装 Docker1.2 使用Docker部署Focalboard 2. 安装Cpolar内网穿透工具3. 实现公网访问Focalboard4. 固定Focalboard公网地址 前言 本篇文章将介绍如何使用Docker本地部署Focalboard项目管理工具&#xff0c;并且结…

python核心编程(二)

python面向对象 一、基本理论二、 面向对象在python中实践2.1 如何去定义类2.2 通过类创建对象2.3 属性相关2.4 方法相关 三、python对象的生命周期,以及周期方法3.1 概念3.2 监听对象的生命周期 四、面向对象的三大特性4.1 封装4.2 继承4.2.1 概念4.2.1 目的4.2.2 分类4.2.3 t…