Python 进阶(六):文件读写(I/O)

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏:Python 入门核心技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬

文章目录

  • 1. 打开文件
  • 2. 读取文件
    • 2.1 逐行读取文件
    • 2.2 读取所有行
  • 3. 写入文件
    • 3.1 向文件中写入多行
  • 4. 关闭文件
  • 5. 文件操作的异常处理
  • 6. 总结
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

Python 是一种高级编程语言,其强大的文件读写功能使得它成为了许多开发者的首选语言。在 Python 中,可以使用内置的 open() 函数来打开文件,并使用不同的读写模式来读取或写入文件内容。下面将详细介绍 Python 文件读写的基本操作和常见用法。

1. 打开文件

在 Python 中,使用 open() 函数打开文件。open() 函数的第一个参数是文件名,第二个参数是打开模式。打开模式有多种,常见的有以下几种:

  • ‘r’:只读模式(默认值)。
  • ‘w’:写入模式,如果文件不存在,则创建文件;如果文件已经存在,则覆盖原文件。
  • ‘a’:追加模式,如果文件不存在,则创建文件;如果文件已经存在,则在文件末尾添加新的内容。
  • ‘x’:创建模式,创建新文件并写入内容,如果文件已经存在,则抛出异常。
  • ‘b’:二进制模式,用于读取和写入二进制数据。
  • ‘t’:文本模式(默认值),用于读取和写入字符串数据。

例如,以下代码打开一个名为 ‘myfile.txt’ 的文件,以只读模式:

f = open('myfile.txt', 'r')

2. 读取文件

在打开文件后,可以使用文件对象的 read() 方法来读取文件内容。例如,以下代码读取打开的文件的全部内容:

f = open('myfile.txt', 'r')
content = f.read()
print(content)
f.close()

read() 方法返回文件的全部内容,如果文件较大,可能会占用大量内存。为了避免这种情况,可以使用 readline()readlines() 等方法来逐行读取文件内容,或使用 with 语句来自动关闭文件对象。

2.1 逐行读取文件

逐行读取文件可以使用 readline() 方法,该方法每次读取一行内容,并返回一个字符串。例如:

f = open('myfile.txt', 'r')
line1 = f.readline()
print(line1)
line2 = f.readline()
print(line2)
f.close()

2.2 读取所有行

readlines() 方法可以读取所有行,并返回一个字符串列表。例如:

f = open('myfile.txt', 'r')
lines = f.readlines()
print(lines)
f.close()

3. 写入文件

在打开文件后,可以使用文件对象的 write() 方法来写入文件内容。例如,以下代码向打开的文件写入一行文本:

f = open('myfile.txt', 'w')
f.write('Hello, World!')
f.close()

write() 方法将指定的字符串写入文件,并返回写入的字符数。如果文件不存在,则创建文件;如果文件已经存在,则覆盖原文件。

3.1 向文件中写入多行

多行文本可以写入到文件中,可以使用 write() 方法,也可以使用 writelines() 方法。例如:

f = open('myfile.txt', 'w')
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
f.writelines(lines)
f.close()

4. 关闭文件

在完成文件读写操作后,必须关闭文件。可以使用文件对象的 close() 方法来关闭文件。例如:

f = open('myfile.txt', 'r')
content = f.read()
f.close()

如果忘记关闭文件,可能会导致内存泄漏或其他问题。为了避免这种情况,可以使用 with 语句来自动关闭文件对象。例如:

with open('myfile.txt', 'r') as f:content = f.read()

使用 with 语句打开文件后,文件对象会在 with 语句块结束时自动关闭。

5. 文件操作的异常处理

在 Python 文件读写操作中,可能会遇到一些错误,例如文件不存在、文件权限不足等。为了处理这些异常,可以使用 try...except 语句来捕获异常。例如:

try:f = open('myfile.txt', 'r')content = f.read()
except FileNotFoundError:print('文件不存在')
finally:f.close()

在上面的代码中,如果文件不存在,则会捕获 FileNotFoundError 异常,打印出提示信息。无论是否发生异常,都会执行 finally 语句块,关闭文件。

6. 总结

Python 文件读写是 Python 程序中常用的操作之一。在 Python 中,使用 open() 函数打开文件,并使用不同的读写模式来读取或写入文件内容。打开文件后,可以使用文件对象的方法来读取或写入文件内容。在完成文件读写操作后,必须关闭文件。使用 with 语句可以更方便地管理文件对象的生命周期。在实际应用中,可能需要考虑文件大小、文件编码、文件格式等因素,以选择合适的文件读写方案。同时,在文件操作中,需要注意异常处理,以确保程序的稳定性和安全性。


系列文章

🔥 Python 进阶(一):PyCharm 下载、安装和使用
🔥 Python 进阶(二):操作字符串的常用方法
🔥 Python 进阶(三):正则表达式(re 模块)
🔥 Python 进阶(四):日期和时间(time、datetime、calendar 模块)
🔥 Python 进阶(五):os 模块

热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

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

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

相关文章

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router】 本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router(处理业务的部分)、抽取框架的全局配置文件 从配置文件中读取数据(服务器监听端口、监听IP等&a…

在CSDN学Golang云原生(Kubernetes集群安全)

一,ABAC授权模式 Kubernetes ABAC(Attribute-Based Access Control)授权模式是一种基于属性的访问控制模型,它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。 在使用 ABAC 授权模式时,管理员…

汇编语言基础知识

目录 前言: 汇编语言的产生 汇编语言的组成 内存 指令和数据 cpu对内存的读写操作 地址总线 数据总线 控制总线 内存地址空间 前言: 汇编语言是直接在硬件之上工作的 编程语言,我们首先了解硬件系统的机构,才能有效地应用…

C/C++多线程操作

文章目录 多线程C创建线程join 和detachthis_thread线程操作锁lock_guardunique_lock 条件变量 condition_variablewaitwaitfor C语言线程创建线程同步 参考 多线程 传统的C(C11标准之前)中并没有引入线程这个概念,在C11出来之前&#xff0c…

PyTorch Lightning教程四:超参数的使用

如果需要和命令行接口进行交互,可以使用Python中的argparse包,快捷方便,对于Lightning而言,可以利用它,在命令行窗口中,直接配置超参数等操作,但也可以使用LightningCLI的方法,更加轻…

WPF实战学习笔记22-添加自定义询问窗口

添加自定义询问窗口 详细代码&#xff1a;https://github.com/DongLiqiang/Mytodo/commit/221de6b2344d5c861f1d3b2fbb2480e3e3b35c26 添加自定义询问窗口显示方法 修改文件Mytodo.Extensions.DialogExtension 添加内容&#xff0c;类中添加内容 /// <summary> /// …

【编译】gcc make cmake Makefile CMakeList.txt 区别

文章目录 一 关系二 gcc2.1 编译过程2.2 编译参数2.3 静态库和动态库1 后缀名2 联系与区别 2.4 GDB 调试器1 常用命令 三 make、makefile四 cmake、cmakelist4.1 语法特性4.2 重要命令4.2 重要变量4.3 编译流程4.4 两种构建方式 五 Vscode5.0 常用快捷键5.1 界面5.2 插件5.3 .v…

使用 docker 一键部署 MySQL

目录 1. 前期准备 2. 导入镜像 3. 创建部署脚本文件 4. MySQL 服务器配置文件模板 5. 执行脚本创建容器 6. 后续工作 7. 基本维护 1. 前期准备 新部署前可以从仓库&#xff08;repository&#xff09;下载 MySQL 镜像&#xff0c;或者从已有部署中的镜像生成文件&#x…

Shell错误:/bin/bash^M: bad interpreter: No such file or directory

目录 错误原因和现象 解决方案 错误原因和现象 在执行shell脚本的时候&#xff0c;报错&#xff1a;/bin/bash^M: bad interpreter: No such file or directory。 是由于该脚本文件是在Windows平台编写&#xff0c;然后在MacOS平台中执行。 在Windows平台上文件是dos格式&…

STM32 SPI学习

SPI 串行外设设备接口&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线。 SCK时钟信号由主机发出。 SPI接口主要应用在存储芯片。 SPI相关引脚&#xff1a;MOSI&#xff08;输出数据线&#xff…

C语言学习笔记---数组篇章

C语言程序设计笔记---011 C语言数组1、一维数组的创建和初识化2、数组的初识化3、一维数组的使用3.1、一维数组在内存中的存储 4、二维数组的创建和初识化4.1、二维数组的使用4.1.1、打印二维数组的元素例程 4.2、二维数组在内存中的存储4.3、数组越界4.3.1、数组越界例程 4.4、…

深入了解 LoRaWAN® MAC 命令

本文深入探讨了用于 LoRaWAN 网络管理的 MAC 命令。它面向终端设备软件开发人员和使用 LoRa 构建设备的团队经理,这些设备实现了LoRaWAN 链路层规范 v1.0.4。本文帮助您了解不同类型的 MAC 命令、每个命令的用途以及如何解释这些命令。 已经使用LoRaMAC-Node™等软件来处理 MA…

C# Blazor 学习笔记(2):组件模板化/插槽

文章目录 前言组件模板为什么要组件模板不使用组件模板使用后 代码部分 和直接绑定数据有和区别&#xff1f; 前言 组件模板化我们在WPF经常遇到&#xff0c;这里将一下Blazor是如何解决的。 组件模板 为什么要组件模板 虽然组件化了之后&#xff0c;我们写代码的速度已经很…

1.netty介绍

1.介绍 是JBOSS通过的java开源框架是异步的,基于事件驱动(点击一个按钮调用某个函数)的网络应用框架,高性能高可靠的网络IO程序基于TCP,面向客户端高并发应用/点对点大量数据持续传输的应用是NIO框架 (IO的一层层封装) TCP/IP->javaIO和网络编程–>NIO—>Netty 2.应用…

Linux 新硬盘分区,挂载

在Linux系统中&#xff0c;当你插入新的硬盘时&#xff0c;你需要进行一些步骤来使系统识别并使用它。以下是一些常见的步骤&#xff1a; 确保硬盘已正确连接到计算机。检查硬盘的电源和数据线是否牢固连接。 打开终端或命令行界面。 运行以下命令来扫描新硬盘&#xff1a; s…

性能测试必备监控技能windows篇

前言 在手头没有专门的第三方监控时&#xff0c;该怎么监控服务指标呢&#xff1f;本篇就windows下监控进行分享&#xff0c;也是我们在进行性能测试时&#xff0c;必须掌握的。下面我们就windows下常用的三种监视工具进行说明&#xff1a; 任务管理器 资源监视器 性能监视器…

找样机素材,就上这5个网站,免费下载~

设计师经常需要用到各种样机模型来展示直接的作品&#xff0c;今天我就分享几个可以免费下载样机模型的网站&#xff0c;大家赶紧收藏起来&#xff01; 菜鸟图库 https://www.sucai999.com/searchlist/3217.html?vNTYxMjky 菜鸟图库有多种类型的设计素材&#xff0c;像平面、…

Element-plus侧边栏踩坑

问题描述 el-menu直接嵌套el-menu-item菜单&#xff0c;折叠时不会出现文字显示和小箭头无法隐藏的问题&#xff0c;但是实际开发需求中难免需要把el-menu-item封装为组件 解决 vue3项目中嵌套两层template <template><template v-for"item in list" :k…

[ 容器 ] Docker 安全及日志管理

目录 Docker 容器与虚拟机的区别Docker 存在的安全问题Docker 架构缺陷与安全机制Docker 安全基线标准容器相关的常用安全配置方法限制流量流向镜像安全避免Docker 容器中信息泄露DockerClient 端与 DockerDaemon 的通信安全 容器的安全性问题的根源在于容器和宿主机共享内核。…

winform学习(1)------多窗口控制

在窗口中跳转到另外一个窗口&#xff0c;需要创建另外一个窗口的对象&#xff0c;然后通过窗口对象的show方法进行展示 这里展示了通过当前窗口的button按键来打开另外一个窗口 private void button1_Click(object sender, EventArgs e){Form2 form new Form2();form.Size n…