17、Python如何读写文本文件

Python2与Python3文件读写的差异

在Python 2和Python 3之间,文件读写操作存在显著差异,主要是因为字符串的语义发生了变化。

  • python 2.x:写入文件前对unicode编码,读入文件后对二进制字符串解码。
  • python 3.x:open函数指定't'的文本模式,encoding指定编码格式。

文件读写方式的基本用法

f = open('b.txt', 'w+')
f.write('hello world') # 写入文件
f.seek(0) # 重置指针
txt = f.read() # 读取文件
print(txt) # hello world
f.close()
  • 打开文件:使用open函数以写入模式打开文件。
  • 写入数据:使用文件对象的write方法写入数据。
  • 指针定位:使用seek方法可以改变文件读写的位置。使用tell方法可以获取当前指针位置。
  • 关闭文件:使用文件对象的close方法关闭文件。

下面看一下文件的打开模式都有哪些

模式

描述

'r':以只读模式打开文件

不存在会报错。
文件的指针将放在文件的开头,该模式为默认值

'w':以只写模式打开文件

如果文件不存在则创建,
如果文件存在,则清空原有内容,文件指针在文件的开头。

'a':以追加模式打开文件

如果文件不存在则创建,文件指针在文件开头,
如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾

'+':以读写方式打开文件

不能单独使用,需要与其他模式一起使用

'b':以二进制方式打开文件

不能单独使用,需要与其他模式一起使用,如:rb、wb

使用with open语句,它会自动处理文件的打开和关闭

上面我们看到,使用 open 函数打开文件后,必须显式调用 close 方法关闭文件,以释放资源。如果忘记关闭文件,可能会导致资源泄漏或文件被锁定。而with open语句是上下文管理器的一部分,确保文件在使用结束后自动关闭。with open 语句简化了文件操作,避免了显式调用 close 方法,即使发生异常,文件也会被正确关闭。

with open('b.txt', 'r') as file:content = file.read()print(content)

综上,除非有特殊需要,使用with open语句适用于大多数情况。

如何逐行读取文件

我们使用 read 读取文件时,是一次性把文件内容读取进来,在处理较大的文件时,明显不太合理,这时我们就需要逐行读取文件内容。下面多提高几种方式开拓一下思路:

方案一:使用for循环逐行读取文件

最简单的方法是使用for循环逐行读取文件。Python的文件对象是可迭代的,因此可以直接在for循环中使用它们。

with open('b.txt', 'r') as file:for line in file:print(line, end='')

方案二:使用readline() 或 readlines() 方法逐行读取

Python的文件对象提供了readline 和 readlines 方法,可以用来逐行读取文件。

with open('b.txt', 'r') as file:line = file.readline()while line:print(line, end='')line = file.readline()with open('b.txt', 'r') as file:lines = file.readlines()
for line in lines:print(line, end='')

方案三:使用iter()函数逐行读取

with open('b.txt', 'r') as file:file_iter = iter(file)for line in file_iter:print(line, end='')

方案四:使用next()函数逐行读取

因为python的文件对象也是可迭代的,所以也可以使用内置的next()函数逐行读取文件。

with open('b.txt', 'r') as file:while True:try:line = next(file)print(line, end='')except StopIteration:break

方案五:使用标准库中的 linecache 模块逐行读取特定行

linecache模块可以用于读取文本文件的特定行。这对于大型文件中查找特定行或逐行处理文件的特定部分非常有用。

import linecache
line = linecache.getline('b.txt', 3)
print(line)

文件查找、复制、移动、重命名、删除等操作

os.listdir:列出指定目录下的文件和子目录

os.rename:不仅可以重命名文件,还可以将文件移动到其他目录

os.remove:删除指定文件

shutil.copy:轻松复制文件

glob.glob:快速查找指定文件

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

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

相关文章

【AI视频】AI虚拟主播制作初体验:从生成数字人到视频创作全流程

博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | AI数字人 文章目录 💯AI虚拟主播💯使用AI绘画工具生成数字人借助GPT生成数字人所需的提示词方案一:使用Midjourney生成数字人方案二:使用TensAI生成数字人补充方案三&…

MoneyPrinterTurbo 安装使用流程

项目地址: https://github.com/harry0703/MoneyPrinterTurbo 开发环境:mac 1 git 下载 # 下载代码到本地 git clone https://github.com/harry0703/MoneyPrinterTurbo.git cd MoneyPrinterTurbo2 docker 配源 在 docker 安装目录执行以下命令显示隐藏…

[Java]maven从入门到进阶

介绍 apache旗下的开源项目,用于管理和构建java项目的工具 官网: Welcome to The Apache Software Foundation! 1.依赖管理 通过简单的配置, 就可以方便的管理项目依赖的资源(jar包), 避免版本冲突问题 优势: 基于项目对象模型(POM),通过一小段描述信息来管理项目的构建 2…

数据中心可视化管理平台:提升运维效率

通过图扑可视化平台实时监控设备状态、能耗和网络流量,帮助运维团队快速识别和处理异常,提高运营效率,确保系统稳定与可靠性。

SPI--原理

SPI–原理 前言: 若对 SPI 通讯协议不了解,可先阅读《SPI 总线协议介绍》文档的内容学习。 关于 FLASH 存储器,请参考“常用存储器介绍”章节,实验中 FLASH 芯片的具体参数,请参考 其规格书《W25Q64》来了解。 大纲 SPI协议S…

glb数据格式

glb数据格式 glb 文件格式只包含一个glb 文件,文件按照二进制存储,占空间小 浏览 浏览glb工具的很多,ccs,3D查看器等都可以,不安装软件的话用下面网页加载就可以,免费 glTF Viewer (donmccurdy.com) glb…

Makefile 学习笔记(一)gcc编译过程

环境准备 .linux 系统(虚拟机) VS code linux 编译过程 预处理: 把.h .c 展开形成一个文件.宏定义直接替换 头文件 库文件 .i 汇编: .i 生成一个汇编代码文件 .S 编译: .S 生成一个 .o .obj 链接: .o 链接 .exe .elf gcc c语言 g c语言 gcc的使用 …

MySQL之表内容的增删改查(含oracel 9i经典测试雇佣表下载)

目录 一:Create 二:Retrieve 1.select列 2.where条件 3.结果排序 4. 筛选分页结果 三:Update 四:Delete 1.删除数据 2. 截断表 五:插入查询结果 六:聚合函数 七:group by子句的使用 表内容的CRUD操作 : Create(创建), Retrieve(读取)…

数据结构之栈(python)

栈(顺序栈与链栈) 1.栈存储结构1.1栈的基本介绍1.2进栈和出栈1.3栈的具体实现1.4栈的应用例一例二例三 2.顺序栈及基本操作(包含入栈和出栈)2.1顺序栈的基础介绍2.2顺序栈元素入栈2.3顺序栈元素出栈2.4顺序栈的表示和实现 3.链栈及…

吐血整理资料后,测试面试相关的资料大全

最近假期收集资料的过程真的让我吐血。 在博客上随便搜一点资料,好多只能看一般,或者打着分享资源,但实际上并不是了。而且大部分资料就是网上找的,恰饭不好评价,但体验真的好差啊! 我搜集了很多面试资料…

流程图怎么画?3个好用的在线流程图软件推荐,绘图没烦恼!

目录 什么是流程图? 为什么需要使用流程图? 流程图中各种图形的含义 如何制作流程图? 小结:流程图如何制作? 流程图是表达工作流程或者系统操作过程的有效工具,被广泛应用于各个行业和领域。…

Centos7环境下Hive的安装

Centos7环境下Hive的安装 前言一、安装Hive1.1 下载并解压1.2 配置环境变量1.3 修改配置1. hive-env.sh2. hive-site.xml 1.4 拷贝数据库驱动1.5 初始化元数据库报错 1.6 安装MySQL1.7 启动 二、HiveServer2/beeline2.1 修改Hadoop配置2.2 修改Hive配置2.2 启动hiveserver22.3 …

2024/9/16 dataloader、tensorboard、transform

一、pytorch两大法宝元素 假设有一个名为pytorch的包 dir():用于打开包,看里面的内容 help():用于查看具体的内容的用处 二、python文件,python控制台和jupyter的使用对比 三、pytorch读取数据 pytorch读取数据主要涉及到两个类&#xff1…

基于 PyQt5 和 OpenCV 进行图像处理操作的GUI工具初版

为了实现一个基于 PyQt5 和 OpenCV 的图形用户界面(GUI),要求如下: 左边显示加载的图片。 中间提供各种对图片进行处理的操作方法(如灰度化、模糊处理等)。 右边显示处理后的效果图。 接下来我将详细讲解如…

【C语言零基础入门篇 - 5】:探索C语言中丰富多样的选择和循环结构

文章目录 选择分支结构if选择结构if...else...选择结构if...else if...else 嵌套选择结构switch多分支结构 循环结构for 循环while 循环do … while 循环 跳转语句 选择分支结构 if选择结构 基本格式:if(表达式1)语句1; 功能:如果表达式1…

坚持的力量--完成向CSDN迁移500篇技术文章阶段小记-以此自勉

前言:本文为迁移前的博客中的文章《坚持的力量-写给第1000篇文章笔记》发表于 publish:May 14, 2021 -Friday,作为原个人博客中累计写满1000篇文章的总结和鼓励。因在向CSDN迁移文章的过程中进行了一些文章合并等调整,总文数大量下降&#xf…

【建设方案】固定资产信息系统建设方案(功能清单列表2024word原件)

固定资产管理系统需求要点: 1. 实现公司内部固定资产管理全生命周期管理,包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全过程管理。 2. 可实现集团内部固定资产盘点管理,包括盘点计划、盘点查询等…

Python数据分析与可视化的全面指南

目录 引言 一、Python数据分析基础 1. 为什么选择Python进行数据分析? 2. 常用的数据分析库 二、环境配置 1. 安装Python 2. 安装Anaconda(可选) 3. 创建虚拟环境 4. 安装必要的库 三、数据分析流程 四、数据处理与分析 1. 导入库…

【PHP代码审计】PHP基础知识

🌝博客主页:菜鸟小羊 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 php简介 php是什么? php(全称:Hypertext Preprocessor,即超文本预处理器&…

圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…