【Python系列】详解 open 函数:文件操作的基石

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 1. open 函数的基本用法
    • 2. 文件模式详解
    • 3. 编码与错误处理
    • 4. 缓冲与性能
    • 5. 文件上下文管理器
    • 6. 文件读写操作
    • 7. 文件指针与位置
    • 8. 文件的关闭
    • 9. 实践案例
    • 10. 总结

在编程的世界里,文件是数据存储和交换的重要方式之一。无论是读取配置文件,还是写入日志信息,文件操作是每个程序员必须掌握的技能。而在众多编程语言中, open 函数是进行文件操作的基础,它为我们提供了一种标准的方式来打开文件,并进行读写操作。
在这里插入图片描述

1. open 函数的基本用法

open 函数的基本语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 要打开的文件的路径。
  • mode: 打开文件的模式,常见的有:
    • 'r':只读模式,默认值。
    • 'w':写入模式,如果文件已存在则覆盖,不存在则创建。
    • 'a':追加模式,如果文件已存在则在文件末尾追加内容,不存在则创建。
    • 'b':二进制模式,通常与 'w', 'r', 'a' 结合使用。
    • '+':更新模式,可以读写文件。
  • buffering: 指定缓冲机制,-1 表示使用默认缓冲。
  • encoding: 指定文件的编码方式,如 'utf-8'
  • errors: 指定编码错误的处理方式。
  • newline: 控制不同操作系统换行符的处理方式。
  • closefd: 指定是否在文件关闭时关闭文件描述符。
  • opener: 指定一个可调用对象,用于在打开文件时调用。

2. 文件模式详解

文件的打开模式决定了我们对文件的操作类型:

  • 只读模式 (‘r’):这是默认模式,只能读取文件,试图写入会引发异常。
  • 写入模式 (‘w’):如果文件存在,将被截断为零长度,即原有内容会被删除。如果文件不存在,会创建新文件。
  • 追加模式 (‘a’):如果文件存在,写入的数据会被添加到文件末尾。如果文件不存在,会创建新文件。
  • 读写模式 (‘+’):可以读取和写入文件。但在写入前需要使用 seek() 方法移动到正确的位置。

3. 编码与错误处理

在处理文本文件时,编码是一个重要的考虑因素。open 函数允许我们通过 encoding 参数指定文件的编码方式。例如,使用 'utf-8' 可以确保正确处理 Unicode 字符。

errors 参数用于指定如何处理编码错误。常见的错误处理方式有:

  • 'strict':默认值,遇到编码错误时抛出异常。
  • 'ignore':忽略错误,不写入错误的字符。
  • 'replace':用一个替代字符来替换错误的字符。

4. 缓冲与性能

buffering 参数控制文件的缓冲机制。缓冲可以提高文件读写的效率,特别是在处理大量数据时。buffering=0 表示不使用缓冲,每次读写都直接操作文件系统;buffering=1 表示使用行缓冲,适合读写文本文件;buffering=-1 表示使用默认的缓冲方式。

5. 文件上下文管理器

Python 的文件对象支持上下文管理器协议,这意味着可以使用 with 语句来自动管理文件的打开和关闭。使用 with 语句可以确保文件在使用后正确关闭,即使在读取文件时发生异常也是如此。

with open('example.txt', 'r') as file:data = file.read()
# 文件已经自动关闭

6. 文件读写操作

一旦文件被成功打开,我们可以使用各种方法来读取或写入数据:

  • read(size):读取指定数量的字符。
  • readline():读取下一行。
  • readlines():读取所有行并返回列表。
  • write(string):写入字符串。
  • writelines(sequence):写入序列中的每个字符串。

7. 文件指针与位置

文件操作中,文件指针的位置非常重要。seek(offset, whence) 方法可以用来移动文件指针到指定位置。whence 参数指定了偏移量 offset 的参照点:

  • 0:文件开头。
  • 1:当前位置。
  • 2:文件末尾。

8. 文件的关闭

使用 close() 方法可以关闭文件,释放系统资源。但在使用 with 语句时,这一步是自动完成的。

9. 实践案例

下面是一个简单的示例,演示了如何使用 open 函数读取和写入文件:

# 写入数据到文件
with open('output.txt', 'w') as f:f.write('Hello, world!')# 读取数据
with open('output.txt', 'r') as f:content = f.read()print(content)

在这里插入图片描述

10. 总结

open 函数是文件操作的基础,它提供了灵活的文件打开方式和丰富的文件操作方法。掌握 open 函数的用法,可以帮助我们更高效地进行文件读写操作。通过合理设置文件模式、编码和缓冲,我们可以优化文件操作的性能和准确性。同时,使用 with 语句可以简化文件的打开和关闭流程,提高代码的可读性和健壮性。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

C# 委托函数 delegate

在C#中,委托(Delegate)是一种特殊的类型,它可以持有对方法的引用。 委托是实现事件的基础。事件本质上是多播委托,允许多个方法被触发 委托允许你将方法作为参数传递给其他方法,或者将方法作为返回值从方法…

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 目录 Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 一、简单介绍 二、共享纹理 1、共享纹理的原理 2、共享纹理涉及到的关键知识点 3、什么可以实现共享 不能实现共享…

微服务安全——SpringSecurity6详解

文章目录 说明SpringSecurity认证快速开始设置用户名密码基于application.yml方式基于Java Bean配置方式 设置加密方式自定义用户加载方式自定义登录页面前后端分离认证认证流程 SpringSecurity授权web授权:基于url的访问控制自定义授权失败异常处理方法授权:基于注解的访问控制…

沐风老师3DMAX一键烘焙插件使用方法

3DMAX一键烘焙插件使用教程 3DMAX一键烘焙插件:从3dMax2021增加了一个新功能是全新的BakingToTexture(烘焙到纹理)工具。s3DMAX一键烘焙插件是新BakingToToTorTexture的简化前端。它允许用户一键烘焙某些实用程序映射(贴图&#x…

MySQL 数据表

InnoDB存储引擎文件 InnoDB存储引擎相关的文件包括重做日志文件、表空间文件。 表空间文件 InnoDB存储引擎在设计上模仿了Oracle,将存储的数据按表空间进行存放。默认配置下,会有一个初始化大小为10MB、名为ibdata1的文件,该文件就是默认的…

FlutterFlame游戏实践#16 | 生命游戏 - 编辑与交互

theme: cyanosis 本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究! Flutter\&Flame 游戏开发系列前言: 该系列是 [张风捷特烈] 的 Flame 游戏开发教程。Flutter 作为 全平台 的 原生级 渲…

Jenkins卡在等待界面解决方法

一、问题 部署jenkins服务器出现Please wait while Jenkins is getting ready to work。 二、原因分析 jenkins里面文件指向国外的官网,因为防火墙的原因连不上。 三、解决方法 将配置文件里面的url换成国内镜像: (1)修改配…

LLM模型与实践之基于 MindSpore 实现 BERT 对话情绪识别

安装环境 # 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行!pip install mindnlp0.3.1 !pip install mindnlp 模型简介 BERT是一种由Google于2018年发布的新型语言模型,它是基于Transforme…

css黑色二级下拉导航菜单

黑色二级下拉导航菜单https://www.bootstrapmb.com/item/14816 body { font-family: Arial, sans-serif; margin: 0; padding: 0; }nav { background-color: #000; /* 导航背景色为黑色 */ }.menu { list-style-type: none; margin: 0; padding: 0; overflow: hidden; }.menu l…

JavaScript(12)——内置对象

JavaScript内部提供的对象,包含各种属性和方法给开发者调用。 Math Math对象是JavaScript提供的一个“数学”对象 包含的方法有: random:生成0-1之间的随机数 ceil:向上取整 floor:向下取整 max:找最大数 min&#…

展馆导览系统架构解析,从需求分析到上线运维

在物质生活日益丰富的当下,人们对精神世界的追求愈发强烈,博物馆、展馆、纪念馆等场所成为人们丰富知识、滋养心灵的热门选择。与此同时,人们对展馆的导航体验也提出了更高要求,展馆导览系统作为一种基于室内外地图相结合的位置引…

Unity显示泰语且兼容泰语音标

前言:使用Unity开发的游戏需要支持泰语本地化,以及解决显示泰语时Unity的bug 目录 1、Text组件显示泰语2、TextMeshPro组件显示泰语 现在很多游戏都需要显示泰语,下面将介绍Unity如何显示泰语,(仅介绍Unity字体方面的设…

npm 安装报错(已解决)+ 运行 “wue-cli-service”不是内部或外部命令,也不是可运行的程序(已解决)

首先先说一下我这个项目是3年前的一个项目了,中间也是经过了多个人的修改惨咋了布置多少个人的思想,这这道我手里直接npm都安装不上,在网上也查询了多种方法,终于是找到问题所在了 问题1: 先是npm i 报错在下面图片&…

Microsoft 365 Office BusinessPro LTSC 2024 for Mac( 微软Office办公套件)

Microsoft 365 Office BusinessPro LTSC 2024是一款专为商业用户设计的办公软件套件,它集成了Word、Excel、PowerPoint等核心应用,并特别包含了Microsoft Teams这一强大的协作工具。Teams将聊天、会议、文件共享、任务管理等功能整合到一个平台上&#x…

AI+HPC 部署优化面试范围分享

背景 最近几年生成式AI技术和自动驾驶技术发展发展很快,这些行业对于算法的运行效率有很高的要求,尤其一个模型在训练完成后运行到设备上,需要大量的工作,包括模型的剪枝、蒸馏、压缩、量化、算子优化、系统优化等。 对于传统的…

Go基础编程 - 12 -流程控制

流程控制 1. 条件语句1.1. if...else 语句1.2. switch 语句1.3. select 语句1.3.1. select 语句的通信表达式1.3.2. select 的基特性1.3.3. select 的实现原理1.3.4. 经典用法1.3.4.1 超时控制1.3.4.2 多任务并发控制1.3.4.3 监听多通道消息1.3.4.4 default 实现非堵塞读写 2. …

FPGA读写操作SRAM_CY7C1051DV33

手上有一块sram需要验证下功能是否正常,我门通过fpga来进行读写测试。 1.首先看下芯片手册,我们重点关注时序部分 总结下,就是读写时间不能小于10nS,也就是最高频率100M,所以我们程序设计按100M时钟速率进行设计。注意&#x…

构建稳固与安全的网络环境:从微软蓝屏事件看软件更新流程与应急响应

“微软蓝屏”事件暴露了网络安全哪些问题? 近日,由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅让科技领域为之震动,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件源于美国电脑安全技术公司“众击”的一…

2024-07-23 Unity插件 Odin Inspector11 —— 使用 Odin 自定义编辑窗口

文章目录 1 OdinEditorWindow1.1 运作方式1.2 使用特性绘制 OdinEditorWindow1.3 在 OdinEditorWindow 中渲染对象 2 OdinMenuEditorWindow2.1 添加菜单导航栏2.2 添加导航栏示例 ​ Odin Window 可以完整地访问 Odin 绘图系统,不再需要操心 Window 的绘制 方式&am…

BGP选路之Local Preference

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP首先比较的是路由信息的首选值(PrefVal),如果 PrefVal相同,就会比较本…