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

news2024/9/22 11:41:18

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
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.coloradmin.cn/o/1944908.html

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

相关文章

OpenAI 发完 GPT-4o,国内大模型行业还有哪些机会?

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 全世界范围内的很多人,我也不例外,想象中的GPT5发布时间应该是24年中,但实际上OpenAI在这个时间点最强的模型是GPT4o&#xff0…

利用一维数组计算今天是今年的第几天

分析: 在一维数组里初始化12个月份,在进行判断是不是闰年,是闰年就把数组的二月的下标改为29,否则不变就按照平年计算,最后把想要计算的月份减1累加到sum里,在进行计算该月份的天也要累加。例如&#xff1a…

Python:对常见报错导致的崩溃的处理

Python的注释: mac用cmd/即可 # 注释内容 代码正常运行会报以0退出,如果是1,则表示代码崩溃 age int(input(Age: )) print(age) 如果输入非数字,程序会崩溃,也就是破坏了程序,终止运行 解决方案&#xf…

FPGA-ROM IP核的使用(2)

前言 接着昨天的进行一个小的实验验证ROM IP核。 实验效果 读取上一期生成的IP核中的数据,并将其显示在数码管上。 具体流程 ROM IP核存放数据0~255,之后每隔0.2s,从0的地址开始读数据,并显示在数码管上;接着先后…

力扣 快慢指针

1 环形链表 141. 环形链表 - 力扣(LeetCode) 定义两个指针,一快一慢。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针和快指针都在位置 head,这样一来,如果在移动的过程中&#x…

Flink入门(更新中)

目录 一、Flink 1.1 基本概念 1.1.1 flink简介 1.2 flink编程模版 1.3 常用概念 1.2.1 datastream 1.2.2 算子、Task 1.2.3 多流操作 1.2.6 时间语义 二、Flink编程实战(Java) 2.1 wordcount 一、Flink 1.1 基本概念 1.1.1 flink简介 1.图片介绍 性能&#xff1a…

Python 爬虫(爬取百度翻译的数据)

前言 要保证爬虫的合法性,可以从以下几个方面着手: 遵守网站的使用条款和服务协议:在爬取数据之前,仔细阅读目标网站的相关规定。许多网站会在其 robots.txt 文件中明确说明哪些部分可以爬取,哪些不可以。 例如&…

Java语言程序设计基础篇_编程练习题**15.19 (游戏:手眼协调)

**15.19 (游戏:手眼协调) 请编写一个程序,显示一个半径为10像素的实心圆,该圆放置在面板上的随机位置,并填充随机的顔色,如图15-29b所示。单击这个圆时,它会消失,然后在另一个随机的位置显示新的随机颜色的…

PySimpleGUI的安装、使用介绍

PySimpleGUI的安装等介绍 如果直接使用pip命令是无法下载免费版的,通过设置的python Interpreter也不可以下载到5.0.0之前的版本了。 现在已经无法通过pycharm直接获取到PySimpleGUI的免费(无需登录)版,不过听说可以登入官网然后进…

OpenTeleVision复现及机器人迁移

相关信息 标题 Open-TeleVision: Teleoperation with Immersive Active Visual Feedback作者 Xuxin Cheng1 Jialong Li1 Shiqi Yang1 Ge Yang2 Xiaolong Wang1 UC San Diego1 MIT2主页 https://robot-tv.github.io/链接 https://robot-tv.github.io/resources/television.pdf代…

JavaWeb连接(JDBC)数据库实现增删改查

JavaWeb连接(JDBC)数据库实现增删改查 1、数据库结构 (1)、创建数据库(source_db) (2)、创建数据表(tb_source),结构如下 字段名说明字段类型长度备注id编号int主键,自增,增量为 1name名称v…

通过Docker安装KingbaseES V8并激活开发License

人大金仓最大连接数的修改跟pgsql差不多,就是修改kingbase.conf文件,修改里面的max_connections 10 ,有时候会发现修改后不成功的问题,最直接的表现就是在修改后重启服务,控制台还是提示重置为10,最大的原…

区块链浏览器开发指南分享

01 概括 区块链浏览器是联盟链上的一种数据可视化工具,用户可以通过web页面,直接在浏览器上查看联盟链的节点、区块、交易信息和子链信息、标识使用信息等,用以验证交易等区块链常用操作。 02功能模块 区块链网络概览 区块链网络概览显示…

leetcode日记(47)螺旋矩阵Ⅱ

这题思路不难,就是找规律太难了。 我首先的思路是一行一行来,根据规律填入下一行的数组,第i行是由前i个数字(n-2*i)个增序数列后i个数字组成,后来觉得太难找规律了就换了一种思路。 思路大致是先计算出需…

【音视频之SDL2】Ubuntu编译配置SDL2环境

文章目录 前言SDL2 是什么编译SDL2下载必备的包下载SDL2.30.5源码 编写CMake模板项目测试代码 总结 前言 SDL2(Simple DirectMedia Layer 2)是一个用于开发跨平台多媒体应用程序的广泛使用的库,特别是在游戏开发中。它为音频、键盘、鼠标、操…

pageoffice常见问题处理

pageoffice是由卓正软件公司开发的一套在线编辑office的插件。要在自己的系统中使用,需要进行集成开发,把pageoffice嵌入到自己的系统中。以下记录在使用过程中常见的问题和解决方法: 1.PageOffice对客户端的要求 office 不能是家庭版&#x…

【区块链+绿色低碳】基于区块链的碳排放管理系统 | FISCO BCOS应用案例

目前业内的碳排放核查方式主要依靠于第三方人工核查、手动填报数据,然后由具备有认证资质的机构进行核验 盖章。但在此过程中存在数据造假的情况,给碳排放量核算的准确性、可靠性带来挑战。 中科易云采用国产开源联盟链 FISCO BCOS,推出基于…

【时序约束】读懂用好Timing_report

一、静态时序分析: 静态时序分析(Static Timing Analysis)简称 STA,采用穷尽的分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求&a…

SpringBoot原理——面试高频

目录 1.什么是起步依赖? 2.起步依赖如何工作? 3.什么是自动配置? 4.自动配置原理 1.什么是起步依赖? 起步依赖是Spring Boot中的一个概念,它实质上是一个Maven项目对象模型(POM),…

1 go语言环境的搭建

本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方,请指正!大家一起学习,…