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

news2024/11/16 19:49:49

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏: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.coloradmin.cn/o/817145.html

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

相关文章

华为数通HCIA-ARP(地址解析协议)详细解析

地址解析协议 (ARP) ARP (Address Resolution Protocol)地址解析协议: 根据已知的IP地址解析获得其对应的MAC地址。 ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个…

ES-5-进阶

单机 & 集群 单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器 性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中 配置服务器集群时,集…

C++第三大特性:多态(1)

目录 一.多态的含义 1.普通调用: 2.多态调用 重写函数: 实现多态调用的三个条件:(缺一不可) 情况1:当只有父类中存在虚函数,两个子类都没有virtual形成的虚函数时,也能形成多态&…

测试开发人员如何进行局部探索性测试?一张图告诉你

我们都知道全局探索性测试的漫游测试法,也知道局部探索性测试可以从用户输入、状态、代码路径、用户数据和执行环境测试着手点。 那么,如果我们能够获取开发代码,我们怎么从代码入手,进行具体的局部探索性测试呢? 简单…

1227. 分巧克力(简单,易懂)

输入样例: 2 10 6 5 5 6输出样例: 2 这个题就是基础的二分问题,做题思路: 找到一个数,让其满足,所有小块的边值,且最终的总和要大于等于我们的K 第一次做错了!! #in…

使用Canvas制作画板

使用Canvas制作画板 在本篇技术博客中,我们将使用JavaScript和Canvas技术来创建一个简单的画板应用程序。这个画板将允许用户在一个画布上绘制线条,使用橡皮擦擦除绘制的内容,更改线条的颜色和宽度,并支持撤销和重做功能。 准备…

Html5播放器按钮在移动端变小的问题解决方法

Html5播放器按钮在移动端变小的问题解决方法 用手机浏览器打开酷播云视频&#xff0c;有时会出现播放器按钮太小的情况&#xff0c;此时只需在<head>中加入下面这段代码即可解决&#xff1a; <meta name"viewport" content"widthdevice-width, initia…

矩阵中的路径(JS)

矩阵中的路径 题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是…

CopyTranslator-复制即翻译 文献翻译神器 支持多接口翻译

一、软件起源 科研人员总少不了阅读大量文献&#xff0c;理解文献内容就成了科研生活常态&#xff0c;而我们平时复制PDF内容黏贴到网页翻译的时候可能会出现多余换行而导致翻译乱码&#xff0c;译文与中文阅读习惯不符的情况&#xff0c;翻译结果很差&#xff0c;需要手动删除…

2.4 传统经验光照模型详解

一、光照模型 光照模型&#xff08;illumination model&#xff09;&#xff0c;也称为明暗模型&#xff0c;用于计算物体某点处的光强&#xff08;颜色值&#xff09;。从算法理论基础而言&#xff0c;光照模型分为两类&#xff1a;一种是基于物理理论的&#xff0c;另一种是…

《深入浅出Java虚拟机》AIC松鼠活动第五期

1、JAVA虚拟机 1.1什么是java虚拟机 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是一种用于执行Java字节码的虚拟机。它可以将Java源代码编译为字节码&#xff0c;然后在不同的操作系统和硬件平台上运行。作为Java语言的核心组成部分&#xff0…

MySQL和Oracle区别

由于SQL Server不常用&#xff0c;所以这里只针对MySQL数据库和Oracle数据库的区别 (1) 对事务的提交 MySQL默认是自动提交&#xff0c;而Oracle默认不自动提交&#xff0c;需要用户手动提交&#xff0c;需要在写commit;指令或者点击commit按钮 (2) 分页查询 MySQL是直接在SQL…

挖了个漏洞,挣了¥12000!

今天给大家分享一个挖漏洞致富的事情。 0x01 前言 本人&#xff0c;一个热爱生活&#xff0c;热爱网络安全的小青年。在此记录自己日常学习以及漏洞挖掘中的奇思妙想&#xff0c;希望能与热爱网络安全的人士一起交流共勉。 0x02 漏洞背景 一个app&#xff0c;开局一个登录框…

模拟面试题

面试题一 C# 1. 装箱和拆箱是什么&#xff1f; 装箱是把栈空间的数据转移到堆空间上去&#xff0c;值类型传引用类型上去 int i 2; object o i; 拆箱是把堆空间的数据转移到栈空间上去&#xff0c;引用类型传到值类型上去 i (int) o 2. 值和引用类型在变量赋值时的区别是…

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2&#xff08;该工具不能在OK3588板卡上完成模型转换&#xff09; git clone https://github.com/rockchip-linux/rknn-to…

气象名词解释

文章目录 SAMPSAAMO SAM SAM(Southern Annualr Mode) 南半球环状模&#xff0c;是南半球大气环流和气候变异的一种重要现象。具有如下特点&#xff1a; 主要特点&#xff1a; 赤道附近环流&#xff1a;在 SAM 正相位期间&#xff0c;赤道附近的环流增强&#xff0c;称为正 SA…

Java源码规则引擎:jvs-rules决策流的自定义权限控制

规则引擎用于管理和执行业务规则。它提供了一个中央化的机制来定义、管理和执行业务规则&#xff0c;以便根据特定条件自动化决策和行为。规则引擎的核心概念是规则。规则由条件和动作组成。条件定义了规则适用的特定情况或规则触发的条件&#xff0c;而动作定义了规则满足时要…

IO进程线程day3(2023.7.31)

一、Xmind整理&#xff1a; 文件描述符概念&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;用fread和fwrite实现文件拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <head.h> int main(int argc, const char…

12-3_Qt 5.9 C++开发指南_创建和使用静态链接库

第12章中的静态链接库和动态链接库介绍&#xff0c;都是以UI操作的方式进行&#xff0c;真正在实践中&#xff0c;可以参考UI操作产生的代码来实现同样的功能。 文章目录 1. 创建静态链接库1.1 创建静态链接库过程1.2 静态链接库代码1.2.1 静态链接库可视化UI设计框架1.2.2 qw…

八大排序算法--快速排序(动图理解)

快速排序 概念 快速排序是对冒泡排序的一种改进。其基本原理是通过选取一个基准元素&#xff0c;将数组划分为两个子数组&#xff0c;分别对子数组进行排序&#xff0c;最终实现整个数组的有序排列。快速排序的时间复杂度最好为O(nlogn)&#xff0c;最坏为O(n^2)&#xff0c;…