Python 处理文件的读写操作

Python 提供了丰富的文件读写操作,可以轻松处理文本文件和二进制文件。以下是关于 Python 文件读写操作的详细讲解,包括打开文件、读取文件、写入文件、文件指针操作、文件关闭和异常处理等方面。

一、文件的打开和关闭

在对文件进行读写操作之前,首先需要打开文件。Python 使用 open() 函数来打开文件,并返回一个文件对象。文件对象提供了多种方法,用于文件的读写操作。

1.1 open() 函数

open() 函数的基本语法如下:

open(filename, mode='r', encoding=None)
  • filename:要打开的文件名,可以包含路径。
  • mode:文件打开模式,默认为 'r'(只读模式)。常见模式如下:
    • 'r':只读模式。如果文件不存在,会抛出 FileNotFoundError 异常。
    • 'w':写入模式。如果文件不存在,会创建新文件;如果文件存在,会覆盖文件内容。
    • 'a':追加模式。如果文件不存在,会创建新文件;如果文件存在,新的内容会追加到文件末尾。
    • 'b':二进制模式,可与其他模式结合使用,如 'rb'(二进制读)、'wb'(二进制写)。
    • '+':更新模式,可与其他模式结合使用,如 'r+'(读写模式)、'w+'(覆盖写读模式)、'a+'(追加读写模式)。
  • encoding:文件编码方式,读取或写入文本文件时使用,如 'utf-8'
1.2 文件关闭

使用完文件后,需要调用文件对象的 close() 方法关闭文件,以释放系统资源。可以使用 with 语句上下文管理器自动管理文件的打开和关闭:

with open('example.txt', 'r') as file:
    content = file.read()
# 文件会在 with 语句块结束时自动关闭

二、文件的读取操作

2.1 read() 方法

read() 方法用于读取整个文件内容,并将其作为字符串返回。可以指定读取的字节数:

with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()  # 读取整个文件内容
    print(content)

如果文件较大,可以指定读取的字节数:

with open('example.txt', 'r', encoding='utf-8') as file:
    partial_content = file.read(100)  # 读取前 100 个字符
    print(partial_content)
2.2 readline() 方法

readline() 方法用于逐行读取文件,每次调用读取一行:

with open('example.txt', 'r', encoding='utf-8') as file:
    line = file.readline()
    while line:
        print(line, end='')
        line = file.readline()
2.3 readlines() 方法

readlines() 方法读取文件的所有行,并返回一个包含各行内容的列表:

with open('example.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')
2.4 文件对象的迭代

文件对象本身是可迭代的,可以直接用于 for 循环逐行读取文件:

with open('example.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line, end='')

三、文件的写入操作

3.1 write() 方法

write() 方法用于将字符串写入文件:

with open('example.txt', 'w', encoding='utf-8') as file:
    file.write("Hello, world!\n")
    file.write("Python file handling.\n")
3.2 writelines() 方法

writelines() 方法用于将一个字符串列表写入文件:

lines = ["Hello, world!\n", "Python file handling.\n"]
with open('example.txt', 'w', encoding='utf-8') as file:
    file.writelines(lines)

四、文件指针操作

文件指针(file pointer)用于指示文件读取或写入的位置。可以使用文件对象的方法进行文件指针的移动和查询。

4.1 tell() 方法

tell() 方法返回文件指针的当前位置:

with open('example.txt', 'r', encoding='utf-8') as file:
    print(file.read(5))  # 读取前 5 个字符
    print(file.tell())   # 返回当前文件指针位置(应为 5)
4.2 seek() 方法

seek() 方法用于移动文件指针到指定位置:

with open('example.txt', 'r', encoding='utf-8') as file:
    file.seek(10)  # 移动文件指针到第 10 个字符
    print(file.read())  # 从第 10 个字符开始读取

五、异常处理

文件操作过程中可能会发生各种异常,如文件不存在、权限不足等。可以使用 try...except 语句进行异常处理:

try:
    with open('example.txt', 'r', encoding='utf-8') as file:
        content = file.read()
except FileNotFoundError:
    print("文件不存在")
except PermissionError:
    print("权限不足")
except Exception as e:
    print(f"其他错误: {e}")

六、二进制文件操作

除了文本文件,Python 也可以处理二进制文件。二进制文件操作与文本文件类似,只是需要以二进制模式打开文件,并使用二进制读写方法。

6.1 二进制读写

打开文件时需要使用 'b' 模式,如 'rb''wb''ab' 等:

# 写入二进制文件
with open('example.bin', 'wb') as file:
    file.write(b'\x01\x02\x03\x04')

# 读取二进制文件
with open('example.bin', 'rb') as file:
    data = file.read()
    print(data)  # 输出: b'\x01\x02\x03\x04'

Python 提供了丰富的文件读写操作,通过 open() 函数打开文件,使用不同模式(如读、写、追加、二进制等)进行操作,并提供了多种方法(如 read()write()readlines() 等)处理文件内容。文件操作完成后需要关闭文件,可以使用 with 语句上下文管理器自动管理文件的打开和关闭。文件操作过程中需要注意异常处理,以确保程序的稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

喜讯|华院计算法律大模型入围《2024大模型典型示范应用案例集》

2024年世界人工智能大会(WAIC)举办期间,中国信通院正式发布了《2024大模型典型示范应用案例集》(以下简称《案例集》)。该案例集由中国信通院华东分院、上海人工智能实验室主导,以产业化为导向,…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧,越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中,知识产权形象设计是非常重要的方面。在智能和互联网的趋势下,未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台,…

Java 中的泛型(超全详解)

一、泛型概述 1. 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数。在…

VS2022 git拉取/推送代码错误

第一步:打开VS2022 第二步:工具->选项->源代码管理->Git 全局设置 第三步:加密网络提供程序设置为:OpenSSL 完结:

函数式接口、匿名内部类、lambda表达式

一、函数式接口 只有一个抽象方法的接口叫函数式接口,不能有两个,也不能有方法实现。 FunctionalInterface注解标记,在idea中可以用这个注解验证是不是函数式接口。实现函数式接口可以转成lambda表达式。 二、匿名内部类 匿名内部类的格式&a…

Java面试八股之Redis单线程为什么性能高

Redis单线程为什么性能高 1.内存数据库特性 要点:Redis是一个内存数据库,其数据主要存储在内存中,而非磁盘。内存访问的速度远超磁盘,通常可达纳秒级别,这使得Redis在处理数据时几乎不受I/O瓶颈的影响。由于数据操作…

Python31 自然语言处理NLP之NLTK的使用

1.关于自然语言处理NLP 自然语言处理NLP是人工智能和计算机科学的一个子领域,专注于计算机与人类(自然)语言之间的互动。其目的是使计算机能够理解、解释和生成人类语言。NLP 涉及语言学、计算机科学和人工智能的多学科交叉,通过…

SAP与税控系统集成案例

一、项目背景 重庆润通控股有限公司成立于2007年,是一家集合汽柴油动力及终端、摩托车、储能电源、汽车零部件、金融服务等产业的多元化集团公司。 大量订单数据导致订单业务会很复杂,为提供订单完成质量,引入税控系统服务商进行订单开票…

实战精选 | 如何在一台 Linux AI PC 上高效运行 OpenVINO™

点击蓝字 关注我们 作者:Adrian Boguszewski,英特尔 AI 软件布道师 武卓博士,英特尔 AI 软件布道师 什么是 AI PC,为什么它有一个特殊的名字? AI PC 是时下 PC 领域的一个热门话题。与普通 PC 不同,AI PC 配…

linux 0.11 中的重要的全局变量

通过对全局变量的了解,也有助于了解整个代码的逻辑。就跟学习类一样,了解类有哪些成员变量,也有助于了解类的成员函数的功能。 (1)内存初始化相关 static u_char mem_map [ PAGING_PAGES ] { 0 , } .本数组对 1M 以外…

JavaSE 面向对象程序设计进阶 IO 练习读取多个对象

练习读取多个对象 用序列化流将对象写入文件 import java.io.*; import java.nio.charset.Charset;public class Main {public static void main(String[] args) throws IOException, ClassNotFoundException {//序列化多个对象Person p1new Person("多多", 男,20)…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络(LSTM) 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中,随着时间步的增加,梯度可能会消失或爆炸,导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

55070-001J 同轴连接器

型号简介 55070-001J是Southwest Microwave的连接器。这款连接器外壳和中心接触件采用 BeCu 合金制成,这是一种具有良好导电性和机械性能的铜合金。绝缘珠则使用了 PEEK HT 材料制成,这是一种耐高温、耐化学腐蚀的工程塑料。为了确保连接的可靠性和稳定性…

旷野之间11 - 开源 SORA 已问世!训练您自己的 SORA 模型!

​​​​​ 目前最接近 SORA 的开源模型是 Latte,它采用了与 SORA 相同的 Vision Transformer 架构。Vision Transformer 究竟有何独特之处?它与之前的方法有何不同? Latte 尚未开源其文本转视频训练代码。我们复制了论文中的文本转视频训练代码,并将其提供给任何人使用,…

袋鼠云产品支持全栈信创适配,更加安全可靠、自主可控

随着国产替换的深化,企业对信创产品的需求逐渐融合更丰富的业务诉求以及未来数智规划,正从“同类替换”转向“迭代升级”。 当前,袋鼠云的产品与芯片、服务器、数据库、操作系统、中间件、云平台等主流信创厂商全面兼容适配,为企…

3.相机标定原理及代码实现(opencv)

1.相机标定原理 相机参数的确定过程就叫做相机标定。 1.1 四大坐标系及关系 (1)像素坐标系(单位:像素(pixel)) 像素坐标系是指相机拍到的图片的坐标系,以图片的左上角为坐标原点&a…

工厂人员定位系统介绍及解决方案

着现代工业不断发展,工厂人员定位系统已经广泛的用于各个大型工厂,这主要是因为UWB人员定位系统功能性非常强大,发挥着更加全面的功能优势,满足了不同厂区对工作环境的管理。而它的出现,将人员定位系统达到了更加精准的…

CISCN2024 RE 后两道 wp 复现

5. gdb_debug 其实逻辑还是挺简单的,当时没认真做 伪代码还算清晰 几个循环的加密之后判断密文 难点是前面有随机数参与加密,不过可以猜测随机数是不变的。 第一段加密 flag异或一组随机数,这里可以在异或的位置下条件断点,用…

windows信息收集和提权

目录 手动收集 工具收集 windows本地内核提权 本地提权 根据windows去找需要的exp进行利用 提权后结合mimikatz使用 msf提权 简单提权 生成后门 上线 BypassUAC绕过UAC提权 msf带的bypassuac模块可以尝试提权 Bypassuac提权命令操作 提权成功 ​local_exploi…

【python】随机森林预测汽车销售

目录 引言 1. 数据收集与预处理 2. 划分数据集 3. 构建随机森林模型 4. 模型训练 5. 模型评估 6. 模型调优 数据集 代码及结果 独热编码 随机森林模型训练 特征重要性图 混淆矩阵 ROC曲线 引言 随机森林(Random Forest)是一种集成学习方法…