白骑士的Python教学进阶篇 2.3 文件操作

系列目录

上一篇:白骑士的Python教学进阶篇 2.2 异常处理

        在Python编程中,文件操作是一个非常重要的主题。无论是读取数据、写入数据,还是进行文件的定位与管理,都需要掌握相关的技能。本篇博客将详细介绍文件的读写、文件的定位与操作、以及上下文管理器的使用。通过这些内容,你将学会如何在Python中高效地进行文件操作。

文件的读写

        文件读写是文件操作的基础。在Python中,文件操作通常分为三步:打开文件、读写文件、关闭文件。Python提供了内置的 ‘open’ 函数用于打开文件,并返回一个文件对象,通过该对象可以进行读写操作。

打开文件

        使用 ‘open’ 函数可以打开文件。‘open’ 函数的基本语法如下:

file_object = open('file_name', 'mode')

        ‘file_name‘:要打开的文件名或路径。

        ’mode`:文件打开模式,常见的模式有:

        ‘ 'r' ’:以只读模式打开文件(默认模式)。

        ‘ 'w' ’:以写入模式打开文件,若文件不存在则创建,若文件存在则清空文件内容。

        ’ 'a' ‘:以追加模式打开文件,若文件不存在则创建,若文件存在则在文件末尾追加内容。

        ‘ 'b' ’:以二进制模式打开文件,可以与其他模式结合使用,如‘ 'rb' ’、‘ 'wb' ’等。

        ’ '+' ‘:以读写模式打开文件,可以与其他模式结合使用,如‘ 'r+' ’、‘ 'w+' ‘等。

读取文件

        Python提供了多种方式读取文件内容,常用的方法有:

        ‘read()’:一次性读取文件的全部内容,适用于小文件。

        ‘readline()’:每次读取一行内容,适用于逐行处理文件。

        ‘readlines()’:一次性读取文件的所有行,并返回一个列表,每行作为列表的一个元素。

        例如:

# 读取整个文件内容
with open('example.txt', 'r') as file:content = file.read()print(content)# 逐行读取文件内容
with open('example.txt', 'r') as file:for line in file:print(line.strip())# 使用readlines()读取文件内容
with open('example.txt', 'r') as file:lines = file.readlines()for line in lines:print(line.strip())

写入文件

        Python同样提供了多种方式写入文件内容,常用的方法有:

        ‘write()’:将字符串写入文件。

        ‘writelines()’:将字符串列表写入文件。

        例如:

# 写入字符串到文件
with open('example.txt', 'w') as file:file.write('Hello, World!\n')# 写入字符串列表到文件
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
with open('example.txt', 'w') as file:file.writelines(lines)

文件的定位与操作

        在进行文件读写时,可能需要对文件进行定位和操作。文件对象提供了一些方法用于文件定位和操作。

文件指针

        文件指针指向文件中当前读写的位置。文件对象的读写操作都是从文件指针当前位置开始的。

定位文件指针

        ‘tell()‘:返回文件指针的当前位置(字节数)。

        ’seek(offset, whence)’:移动文件指针到指定位置。

         ‘offset‘:偏移量。

         ‘whence’:参考位置,可取值:

         ’0‘(默认):从文件开头计算偏移。

         ‘1’:从文件当前位置计算偏移。

         ’2‘:从文件末尾计算偏移。

        例如:

# 定位文件指针
with open('example.txt', 'r') as file:content = file.read(5)print(content)  # 读取前5个字符print(file.tell())  # 输出当前文件指针位置file.seek(0)  # 移动文件指针到开头content = file.read(5)print(content)  # 再次读取前5个字符

截断文件

        ‘truncate(size)’:截断文件到指定大小(字节数)。

        例如:

# 截断文件
with open('example.txt', 'w') as file:file.write('Hello, World!\nThis is a test file.')file.truncate(13)  # 截断文件到13个字节

上下文管理器

        在进行文件操作时,使用上下文管理器(Context Manager)是一个非常好的实践。上下文管理器可以确保在文件操作完成后自动关闭文件,避免忘记关闭文件导致资源泄露。

使用 ’with‘ 语句

        ‘with’ 语句是上下文管理器的常用方式。使用 ‘with’ 语句打开文件,能够自动管理文件的打开和关闭。语法如下:

with open('file_name', 'mode') as file_object:# 文件操作

        例如:

# 使用with语句读取文件
with open('example.txt', 'r') as file:content = file.read()print(content)# 使用with语句写入文件
with open('example.txt', 'w') as file:file.write('Hello, World!\n')

自定义上下文管理器

        除了文件操作,Python还允许开发者自定义上下文管理器,以便在进入和退出上下文时执行特定操作。自定义上下文管理器可以通过实现 ‘__enter__’ 和 ‘__exit__’ 方法的类来实现,或者使用 ‘contextlib’ 模块的 ‘contextmanager’ 装饰器。

        例如:

from contextlib import contextmanager@contextmanager
def custom_context():print('Entering context')yieldprint('Exiting context')# 使用自定义上下文管理器
with custom_context():print('Inside context')

总结

        文件操作是Python编程中的一个基础而重要的部分。通过学习文件的读写、文件的定位与操作以及上下文管理器的使用,可以在Python中高效地处理各种文件操作需求。无论是读取数据文件、写入日志文件,还是进行文件的复杂管理,这些技能都是必不可少的。希望本篇内容能够帮助更好地掌握Python的文件操作,为编程之路打下坚实的基础。

下一篇:白骑士的Python教学进阶篇 2.4 高级数据结构​​​​​​​

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

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

相关文章

TOGAF培训什么内容?参加TOGAF培训有什么好处?考试通过率多少?

TOGAF培训什么内容?参加TOGAF培训有什么好处?考试通过率多少? TOGAF培训哪些内容? 通过本课程,你将掌握TOGAF的理论和实践,理解企业架构的影响,能够评估、启动、设 计、执行新一轮企业和IT架构…

1:25万基础电子地图(西藏版)

我们为你分享过四川版、云南版、江西版、贵州版、重庆版和青海版的1比25万基础电子地图,现在再为你分享西藏版的电子地图。 如果你需要西藏版的1比25万基础电子地图,你可以在文末查看该数据的领取方法。 基础电子地图西藏版 西藏版1:25万基础电子地图…

Java中的类加载器

类加载器 1.什么是类加载器? 启动类加载器(Bootstrap ClassLoader):这是JVM自带的类加载器,负责加载Java的核心类库,如rt.jar等。由于安全原因,启动类加载器加载的类不能被其他类加载器加载的类…

试用笔记之-免费的汇通餐饮管理软件

首先下载免费的汇通餐饮管理软件: http://www.htsoft.com.cn/download/htcanyin.exe 安装后的图标 登录软件,默认没有密码 汇通餐饮管理软件主界面 汇通餐饮软件前台系统 点菜

eclipse断点调试(用图说话)

eclipse断点调试(用图说话) debug方式启动项目,后端调试bug调试 前端代码调试,请参考浏览器断点调试(用图说话) 1、前端 选中一条数据,点击删除按钮 2、后端接口打断点 断点按钮 介绍 resum…

前端知识点

HTML、CSS 相关 1、 BFC 1、BFC 是什么? BFC(Block Formatting Context) 格式化上下文; 指一个独立的渲染区域,或者说是一个隔离的独立容器;可以理解为一个独立的封闭空间。无论如何不会影响到它的外面 …

Elasticsearch-Rest-Client

Elasticsearch-Rest-Client&#xff1a;官方RestClient&#xff0c;封装了ES操作&#xff0c;API层次分明&#xff0c;上手简单。 1. 导入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high…

BUG TypeError: GPT2Model.forward() got an unexpected keyword argument ‘past’

TypeError: GPT2Model.forward() got an unexpected keyword argument past’ 环境 transformers 4.38.1详情 这是由于新版的transformers 对GPT2Model.forward() 参数进行了改变导致的错误。具体是past名称改为了 past_key_values 。 解决方法 找到错误语…

【Windows】draw.io(免费的开源跨平台绘图软件)软件介绍

软件介绍 draw.io 是一款免费且易于使用的在线流程图绘图软件&#xff0c;后来更名为 diagrams.net。它最初作为一个基于 Web 的应用程序提供&#xff0c;支持用户创建各种类型的图表、流程图、网络图、组织结构图、UML 图等。它是完全免费的、强大的、专业的、易于使用的和高…

分享:Motionity-开源的Web端动画编辑器

Motionity是一个免费且开源的Web端动画编辑器&#xff0c;它结合了After Effects和Canva的优点&#xff0c;为用户提供了强大的动画编辑功能。支持视频剪切、图像搜索过滤、文本动画库、图层蒙版等功能。 一、项目背景与特点 开源项目&#xff1a;Motionity是一个开源项目&…

黄子韬vs徐艺洋卫生间风波

【热搜爆点】黄子韬VS徐艺洋&#xff1a;卫生间风波背后的职场与友情界限探讨在这个充满欢笑与意外的综艺时代&#xff0c;《跟我出游吧》再次以它独有的魅力&#xff0c;引爆了一个既尴尬又引人深思的话题——“黄子韬要上徐艺洋的卫生间&#xff1f;”这不仅仅是一句简单的调…

Yarn的安装与配置

Yarn 是一个快速、可靠且安全的 JavaScript 包管理器&#xff0c;最初由 Facebook 开发&#xff0c;旨在提供比 npm 更快的依赖安装速度和更一致的包管理体验。以下是 Yarn 的安装与配置教程&#xff1a; 安装 Yarn 方法 1: 使用 npm 安装 如果你的系统已经安装了 Node.js …

基于YOLOv10深度学习的CT扫描图像肾结石智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【ajax实战02】数据管理网站—验证码登录

一&#xff1a;数据提交&#xff08;提交手机验证码&#xff09; 核心思路整理 利用form-serialize插件&#xff0c;收集对象形式的表单数据后&#xff0c;一并提交给服务器。后得到返回值&#xff0c;进一步操作 基地址&#xff1a; axios.defaults.baseURL http://geek.…

Keil5 ST-LINK setting闪退问题解决

1. 官网下载新版驱动文件 MDK uVision crashes when using ST-Link debugger 2. 解压替换 STLinkUSBDriver6.1.2.0Signed 我的库文件目录&#xff1a; D:\Tool\Keil5\ARM\STLink

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(六)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

【JS】纯web端使用ffmpeg实现的视频编辑器-视频合并

纯前端实现的视频合并 接上篇ffmpeg文章 【JS】纯web端使用ffmpeg实现的视频编辑器 这次主要添加了一个函数&#xff0c;实现了视频合并的操作。 static mergeArgs(timelineList) {const cmd []console.log(时间轴数据,timelineList)console.log("文件1",this.readD…

MatLab三维图形绘制基础

三维图形绘制 三维曲线 plot3 螺旋图绘制 % %三维图像:螺旋图绘制 clear; clc; t [0:0.1:10*pi];% 向量 x sin(t) t.*cos(t);%t是向量&#xff0c;用点乘 y cos(t) - t.*sin(t); z t; plot3(x,y,z); grid on;plot3 绘制同型矩阵 %% % plot3绘制同型矩阵 t [0:0.1:10*…

游戏AI的创造思路-技术基础-tanh函数详解

又来搞事情&#xff0c;总想着把sigmoid函数替换成其他函数作为激活函数&#xff0c;或者找到更合适某一段训练的函数&#xff0c;所以今天来聊聊tanh函数&#xff08;谁让咱当年差点去了数学系&#xff0c;结果还是在数学系转过去计算机的&#xff09; 目录 3.9. tanh函数详解…

【Rust基础入门】Hello Cargo

文章目录 前言Cargo是什么&#xff1f;Cargo的作用查看cargo版本使用cargo创建项目Cargo.toml文件cargo build命令cargo runcargo check为发布构建 总结 前言 在Rust编程中&#xff0c;Cargo扮演着至关重要的角色。它是Rust的包管理器&#xff0c;负责处理许多任务&#xff0c…