【Python】open()函数的全面解析:如何读取和写入文件

news2024/9/20 13:16:47

文章目录

    • 1. 基本用法:打开文件
    • 2. 不同模式的使用
    • 3. 文件读取方法
      • 3.1 readline()方法
      • 3.2 readlines()方法
    • 4. 上下文管理器
    • 5. 错误处理
    • 6. 小结

在编程过程中,文件操作是一个非常常见的任务,而Python的open()函数是进行文件操作的基础。通过open(),可以方便地读取文件内容,写入数据,甚至创建新的文件。本文将详细介绍open()函数的用法,包括各种模式、常见操作和错误处理。

1. 基本用法:打开文件

open()函数的基本用法非常简单,只需要传入文件路径和模式即可。以下是一个基本示例:

file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

这个代码块展示了如何以读取模式打开一个文件并读取其内容。open('example.txt', 'r')中的'r'表示读取模式。使用file.read()读取文件内容,并使用print()打印出来。最后,使用file.close()关闭文件。

2. 不同模式的使用

Python的open()函数支持多种模式,常见的有:

模式描述
'r'读取模式(默认)。
'w'写入模式。如果文件存在,会覆盖其内容;如果文件不存在,会创建新文件。
'a'追加模式。如果文件存在,数据会写入文件末尾;如果文件不存在,会创建新文件。
'b'二进制模式。
't'文本模式(默认)。
'+'读写模式。

下面是几个常见模式的示例:

写入模式

file = open('example.txt', 'w')
file.write('Hello, World!')
file.close()

追加模式

file = open('example.txt', 'a')
file.write('\nHello again!')
file.close()

二进制模式

file = open('example.jpg', 'rb')
content = file.read()
file.close()

读写模式

file = open('example.txt', 'r+')
content = file.read()
file.write('\nAppending new content')
file.close()

3. 文件读取方法

除了read()方法外,Python还提供了其他几种读取文件的方法,如readline()readlines()

3.1 readline()方法

readline()方法一次读取一行,非常适合逐行处理文件内容:

file = open('example.txt', 'r')
line = file.readline()
while line:
    print(line.strip())
    line = file.readline()
file.close()

3.2 readlines()方法

readlines()方法一次读取所有行,并返回一个包含所有行的列表:

file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
    print(line.strip())
file.close()

4. 上下文管理器

使用open()时,需要手动关闭文件。如果忘记关闭文件,可能会导致资源泄露或文件锁定问题。Python提供了上下文管理器,通过with语句,可以确保文件在使用完毕后自动关闭。

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

解释

  • with open('example.txt', 'r') as file:使用上下文管理器打开文件。
  • 文件会在代码块执行完毕后自动关闭,无需手动调用close()

5. 错误处理

在文件操作过程中,可能会遇到各种错误,如文件不存在、权限不足等。可以使用try-except语句进行错误处理。

try:
    file = open('nonexistent.txt', 'r')
    content = file.read()
    print(content)
except FileNotFoundError:
    print('文件不存在')
except PermissionError:
    print('权限不足')
finally:
    try:
        file.close()
    except NameError:
        pass

解释

  • try块:尝试执行文件操作。
  • except FileNotFoundError:捕获文件不存在错误。
  • except PermissionError:捕获权限不足错误。
  • finally块:确保文件被关闭,即使在发生错误时。

6. 小结

以上内容详细介绍了Python中open()函数的各种用法和模式,以及如何读取和写入文件。在实际开发中,合理使用上下文管理器和错误处理,可以有效避免资源泄露和程序崩溃。文件操作是Python编程中的基础技能,掌握这些知识将对日常开发大有裨益。


推荐我的相关专栏:

  • python 错误记录
  • python 笔记
  • 数据结构

在这里插入图片描述

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

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

相关文章

Sparse4D-v3:稀疏感知的性能优化及端到端拓展

极致的感知性能与极简的感知pipeline一直是牵引我们持续向前的目标。为了实现该目标,打造一个性能优异的端到端感知模型是重中之重,充分发挥深度神经网络数据闭环的作用,才能打破当前感知系统的性能上限,解决更多的corner case&am…

分布式 I/O 系统Modbus TCP 耦合器BL200

BL200 耦合器是一个数据采集和控制系统,基于强大的 32 位微处理器设计,采用 Linux 操作系统,可以快速接入现场 PLC、SCADA 以及 ERP 系统, 内置逻辑控制、边缘计算应用,支持标准 Modbus TCP 服务器通讯,以太…

Ubuntu Desktop Docker 配置代理

Ubuntu Desktop Docker 配置代理 主要解决 docker pull 拉取不了镜像问题. Docker Desktop 配置代理 这个比较简单, 直接在 Docker Desktop 里设置 Proxies, 示例如下: http://127.0.0.1:7890 Docker Engine 配置代理 1.Docker Engine 使用下面配置文件即可, root 用户可…

Java面试八股之简述单例redis并发承载能力

简述单例redis并发承载能力 单例Redis实例的并发承载上限受到多种因素的影响,包括但不限于硬件性能、网络条件、数据集大小、操作类型以及Redis自身的配置。以下是几个关键因素的详细说明: 硬件性能: CPU:Redis主要依赖于CPU的…

服务器基础1

服务器基础复习01 1.环境部署 系统:华为欧拉系统 网络简单配置nmtui 因为华为欧拉系统密码需要复杂度 所以我们可以进入后更改密码 echo 123 | passwd --stdin root也可以 echo "root:123" | chpasswd2.关闭防火墙,禁用SElinux 首先先关…

BlueToothLE 拓展中writeBytesWithResponse与writeBytes有什么区别?

writeBytesWithResponse与writeBytes有什么区别? 根据文档,有WithRespon的,会触发一个 BytesWritten 事件,另一个不触发这个事件:App Inventor 2 低功耗蓝牙 BlueToothLE 拓展 App Inventor 2 中文网

SQl server 练习3

课后作业 在homework库下执行: CREATE TABLE user_profile_2 ( id int NOT NULL, device_id int NOT NULL, gender varchar(14) NOT NULL, age int , university varchar(32) NOT NULL, gpa float, active_days_within_30 float, question_cnt float, answer_cnt fl…

昇思25天学习打卡营第14天|DCGAN 与漫画头像生成:原理剖析与训练实战

目录 数据集下载 数据处理 构建生成器 构建判别器 模型训练 结果展示 数据集下载 首先尝试卸载已安装的 mindspore 库,然后通过指定的镜像源安装特定版本(2.2.14)的 mindspore 库。从指定的 URL 下载一个 zip 文件到当前目录下的 ./faces…

kubernetes k8s Deployment 控制器配置管理 k8s 红蓝部署 金丝雀发布

目录 1、Deployment控制器:概念、原理解读 1.1 Deployment概述 1.2 Deployment工作原理:如何管理rs和Pod? 2、Deployment资源清单文件编写技巧 3、Deployment使用案例:创建一个web站点 4、Deployment管理pod:扩…

信创学习笔记(三),信创之操作系统OS思维导图

创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” 一. 回顾信创CPU芯片 1. x86应用生态最丰富, 海光(3,5,7)授权较新,无桌面授权,多用于服务器 兆芯(ZX, KX, KH)授权较早期. 2. ARMv8移动端应用生态丰富, 华为鲲鹏(9) ,制裁中,…

JWT令牌详细解析

JWT令牌 前言一、JWT是什么?二、JWT与传统CookieSession的对比三、JWT1. JWT的功能2. JWT的结构3. JWT的使用 前言 主要介绍了SpringBoot集成JWT令牌详细说明,JWT方式校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的…

前端报错adding CSS “touch-action: none“ to this element解决方案

目录 如图所示控制台出现报错: 原因: touch-action 介绍: 解决方案: 1.手动设置touch-action: 2.使用条件渲染: 3.CSS样式隔离: 4.浏览器兼容性: 5. 忽略警告 如图所示控制台…

持续集成04--Jenkins结合Gitee创建项目

前言 在持续集成/持续部署(CI/CD)的旅途中,Jenkins与版本控制系统的紧密集成是不可或缺的一环。本篇“持续集成03--Jenkins结合Gitee创建项目”将引导如何将Jenkins与Gitee(一个流行的Git代码托管平台)相结合&#xff…

华为USG6000V防火墙安全策略用户认证

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1🤣防火墙FW1web服务配置 2.网络配置 要求1:DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 要求2:生产区不…

手机误删图片怎么办?2个照片恢复大师来帮忙,轻松找回

手机照片早已成为我们日常生活中的一部分,记录着欢笑、泪水等各种瞬间。但有时候,因为各种原因,它们会突然消失,让人痛心疾首。照片恢复有哪些方法呢?别急,今天就给大家带来2位照片恢复大师,它们…

中国姓名学大师排行榜,山东济南最有名的起名大师是谁

在2024年揭晓的中国姓名学领域,一场声势浩大的评选活动吸引了无数目光——寻找国内最杰出的起名大师。在这场激烈的竞争中,山东济南的颜廷利教授以其深厚的易学功底和卓越的命名技艺,荣获“中国姓名学十大权威专家”榜首位置,成为…

【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf 【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversaria…

NSSCTF中24网安培训day2中web题目【下】

[NISACTF 2022]easyssrf 这道题目考察的是php伪协议的知识点 首先利用file协议进行flag查找 file:///flag.php 接着我们用file协议继续查找fl4g file:///fl4g 接着我们访问此文件,得到php代码如下 这里存在着stristr的函数&#x…

AI视频教程下载-ChatGPT速成课程:工作中的ChatGPT入门

使用ChatGPT提升你的生产力:利用OpenAI的革命性ChatGPT模型。 你准备好深入人工智能交流的世界,彻底改变你的职业生涯了吗?本课程适合技术背景和非技术背景的人士,它以独特、有趣且专业的方式,教授如何使用OpenAI的Ch…

【鸿蒙OS】【ArkUI】鸿蒙OS UI布局适配终极攻略

鸿蒙OS UI布局适配终极攻略 像素适配大法,此方法也适合Android ArkUI为开发者提供4种像素单位,框架采用vp为基准数据单位。 vp相当于Android里的dp fp相当于Android里的sp 官方是如何定义的呢,如下图 今天我来教大家如何用PX做到ArkUI的终级适配&…