Python文件处理实战

学习目标

通过本课程的学习,学员将掌握如何在Python中打开、读取、写入和关闭文件,了解文本文件和二进制文件的区别,以及在文件处理中的一些最佳实践。

相关知识点

Python文件处理

学习内容

1 Python文件处理

1.1 文件的基本操作

在Python中,文件操作是通过内置的open()函数来完成的。这个函数可以打开一个文件,并返回一个文件对象,通过这个对象可以进行文件的读写等操作。文件操作的基本步骤包括:打开文件、读取或写入数据、关闭文件。

1.1.1 打开文件

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

file_object = open(file_name, mode='r', encoding=None)
file_name:要打开的文件的名称。

mode: 打开文件的模式,常见的模式有:
‘r’:只读模式,默认值。如果文件不存在,会抛出异常。
‘w’:写入模式,会覆盖已存在的文件。如果文件不存在,会创建新文件。
‘a’:追加模式,如果文件存在,指针会放在文件的末尾。如果文件不存在,会创建新文件。
‘b’:二进制模式,用于处理二进制文件。
‘+’:读写模式,可以与上述模式组合使用。
encoding: 指定文件的编码格式,如’utf-8’。

1.1.2 读取文件

读取文件可以通过多种方法实现,包括读取整个文件、按行读取等。

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

上述代码中,with语句用于自动管理文件的打开和关闭。file.read()方法读取文件的全部内容,并返回一个字符串。

1.1.4 按行读取
with open('example.txt', 'r', encoding='utf-8') as file:for line in file:print(line.strip())  # 使用strip()方法去除每行末尾的换行符

按行读取文件适用于处理大文件,因为不需要一次性将整个文件加载到内存中。

1.1.5 写入文件

写入文件同样可以通过多种方法实现,包括写入字符串、追加内容等。

1.1.6 写入字符串
with open('output.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')file.write('This is a test.\n')

上述代码中,file.write()方法用于写入字符串。每次调用write()方法时,内容会被写入文件中。

1.1.7 追加内容
with open('output.txt', 'a', encoding='utf-8') as file:file.write('This is an appended line.\n')

使用’a’模式打开文件时,写入的内容会被追加到文件的末尾。

1.1.8 关闭文件

虽然使用with语句可以自动关闭文件,但在某些情况下,可能需要手动关闭文件。这可以通过调用文件对象的close()方法来实现:

file = open('example.txt', 'r', encoding='utf-8')
content = file.read()
print(content)
file.close()
1.2 文本文件与二进制文件

在Python中,文件可以分为文本文件和二进制文件。文本文件通常用于存储人类可读的文本数据,而二进制文件用于存储非文本数据,如图像、音频等。

1.2.1 文本文件

文本文件通常使用文本编辑器创建和编辑,内容以字符形式存储。在Python中,处理文本文件时,通常使用’r’、‘w’、'a’等模式,并指定编码格式。

示例:读取和写入文本文件

# 读取文本文件
with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)# 写入文本文件
with open('output.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')file.write('This is a test.\n')
1.2.2 二进制文件

二进制文件以字节形式存储数据,通常用于存储图像、音频等非文本数据。在Python中,处理二进制文件时,需要在模式中添加’b’,如’rb’、'wb’等。

示例:读取和写入二进制文件

# 读取二进制文件
with open('example.jpg', 'rb') as file:content = file.read()print(content[:10])  # 打印前10个字节# 写入二进制文件
with open('output.jpg', 'wb') as file:file.write(content)
1.3 文件处理的最佳实践

在进行文件处理时,遵循一些最佳实践可以提高代码的健壮性和可维护性。

1.3.1 使用with语句

使用with语句可以确保文件在操作完成后自动关闭,即使发生异常也不会导致文件未关闭的问题。

with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
1.3.2 处理文件不存在的情况

在打开文件时,如果文件不存在,open()函数会抛出FileNotFoundError异常。可以通过异常处理来优雅地处理这种情况。

try:with open('nonexistent.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
except FileNotFoundError:print('文件不存在')
1.3.3 使用适当的编码

在处理文本文件时,指定正确的编码格式非常重要。常见的编码格式有’utf-8’、'ascii’等。如果编码格式不正确,可能会导致读取或写入文件时出现乱码。

with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
1.3.4 检查文件是否已关闭

在某些情况下,可能需要检查文件是否已经关闭。可以通过检查文件对象的closed属性来实现。

file = open('example.txt', 'r', encoding='utf-8')
content = file.read()
print(content)
file.close()if file.closed:print('文件已关闭')
else:print('文件未关闭')
1.3.5 使用seek()和tell()方法

seek()方法用于移动文件指针的位置,tell()方法用于获取当前文件指针的位置。这两个方法在处理大文件时非常有用。

with open('example.txt', 'r', encoding='utf-8') as file:print(file.tell())  # 输出当前文件指针的位置content = file.read(10)  # 读取前10个字符print(content)file.seek(0)  # 将文件指针移动到文件开头print(file.tell())  # 输出当前文件指针的位置

通过本课程的学习,学员将掌握Python中文件处理的基本操作、文本文件与二进制文件的区别,以及文件处理的最佳实践。

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

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

相关文章

Corrosion2靶机

打开靶机信息收集:kali里使用arp-scan -l或者netdiscover发现主机使用nmap扫描端口nmap -sS -sV -T4 -n -p- 192.168.31.20开启了22、80、8080端口 8080发现开启了tomcat服务扫出了他的ip以及他开放的端口,我们接下来拿浏览器访问一下两个页面都没有什么…

编程与数学 03-002 计算机网络 18_物联网与网络

编程与数学 03-002 计算机网络 18_物联网与网络一、物联网的基本概念(一)物联网的架构与层次(二)物联网的关键技术二、物联网网络的构建(一)物联网网络的通信协议(二)物联网网络的拓…

【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载

在Kubernetes中,配置管理是应用部署的重要环节。ConfigMap作为存储非敏感配置数据的资源对象,能帮助我们实现"配置与代码分离",让应用部署更灵活。一、什么是ConfigMap? ConfigMap是Kubernetes中用于存储非加密配置数据…

Promise和回调地狱

顺序执行 vs. 异步操作: 当我们说“顺序执行”,通常是指 操作按顺序发生。而 异步操作 指的是操作在后台执行,不会阻塞其他操作,通常会使用回调、Promise 或 async/await 来处理结果。 在 Promise 链式调用 的情况下,虽…

LeetCode 65:有效数字

LeetCode 65:有效数字问题本质与挑战 需判断字符串是否为有效数字,规则涉及整数、小数、指数(e/E)的复杂组合,如: 整数:123、-45、678小数:1.2、.3、4.、5.6指数:1e10、2…

数据结构之顺序表应用与双指针法

元素删除通过元素移动的方式来模拟删除操作:将指定下标后的所有元素依次向前移动一位,覆盖要删除的元素,从而达到 "删除" 的效果。 通过自定义函数实现删除功能,需要传入数组、数组长度的指针(因为要修改长度…

Python编程基础与实践:Python基础数据类型入门

Python变量与数据类型实践 学习目标 通过本课程的学习,学员可以掌握Python中变量的基本概念,了解并能够使用Python的基本数据类型,包括整型、浮点型、字符串和布尔值。此外,学员还将学习如何在实际编程中声明和使用这些数据类型。…

深入解析C/C++函数变量传递:栈、堆与全局变量的生命周期之旅

资料合集下载链接: ​https://pan.quark.cn/s/472bbdfcd014​ 在编程学习中,函数是构建程序的基石,而理解变量如何在函数之间正确、安全地传递,则是从入门到进阶的关键一步。我们经常会遇到这样的困惑:为什么一个指针在某个函数里工作正常,传递给另一个函数后却变成了“…

Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法

Ubuntu 18启动以后发现连接不上网络,执行 ip a命令或者ifconfig都显示不了正确的地址(192.168.xxx.xxx)。 刚装好系统是没问题的,打算使用FTP开启ftp服务与windows互传文件,安装了net-tools插件就突然连不上网络了,怀疑是网络配置被修改了。 经过了一段时间折腾终于解决了,…

【计算机网络】Socket网络编程

目录 一、主机字节序列和网络字节序列 二、套接字地址结构 1、IPv4 地址结构 (sockaddr_in) 2、IPv6 地址结构 (sockaddr_in6) 3、通用套接字地址结构 (sockaddr) 4、Unix域套接字地址结构 (sockaddr_un) 5、专用 socket 地址结构 6、套接字地址结构的转换 字符串转二进制地址 …

网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率

文章目录前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息5. 本地运行测试6. 安装内网穿透6.1 配置公网地址…

Pycharm的设置过程

20250802 用于记录pycharm的设置过程 编辑器相关 python语言设置文件注释 在设置的编辑器部分,按照需求设置模板! 函数生成注释

GaussDB as的用法

通过使用 SQL,可以为表名称或列名称指定别名(Alias)。1 别名的作用SQL 别名用于为表或表中的列提供临时名称。 SQL 别名通常用于使列名更具可读性。 SQL 一个别名只存在于查询期间。 提高SQL执行效率与编写SQL代码效率。2 使用别名的场景在下…

Prim算法

一,prim算法逻辑1.理解:克鲁斯卡尔算法关注的是边,普里姆算法关注的是点把图中每个顶点比作孤岛,点亮一座孤岛就可以解锁附近的孤岛每次解锁的点都是离自身最近的点2.普里姆算法流程a.采用邻接矩阵表示,考虑要查找最小…

嵌入式学习之硬件——51单片机 1.0

一、基础知识1.什么是嵌入式?嵌入式以应用为中心,计算机技术为基础,软硬件可裁剪的专用计算机系统;2.嵌入式的应用?消费电子、无人驾驶、储能、新能源........3.嵌入式发展?(1)第一阶…

51c大模型~合集161

自己的原文哦~ https://blog.51cto.com/whaosoft/14079111 #这家国内公司,在给xx智能技术栈做「通解」 打通机器人智能化的关键:眼脑手。 xx智能(Embodied Intelligence)是 AI 领域里热度极高的赛道:给大模型…

Linux9 root密码修改

开机按e进入在linux行即quiet后面输入rd.break ctrlx进入内核输入mount -o remount,rw /sysrootchroot /sysrootpasswd root即可修改密码输入touch /.autorelabelexitexit等待即可

提示词增强工程(Prompt Enhancement Engineering)白皮书草稿

提示词增强工程(Prompt Enhancement Engineering)白皮书草稿 作者: 技术人进化社 Email:2819699195qq.com 日期: 2025年7月30日 1. 引言 随着大型语言模型(LLM)能力的飞速发展,如何高…

电路元器件

电流单位 电压 电阻单位 电阻的决定式 欧姆定律 交流电和直流电 交流电 串联电路 并联电路 在线模拟器 Circuitjs web 在线电路模拟器 下载

广泛分布于内侧内嗅皮层全层的速度细胞(speed cells)对NLP中的深层语义分析的积极影响和启示

速度细胞(Speed Cells)作为内侧内嗅皮层(MEC)的核心神经元,通过编码运动速度信息与网格细胞协同实现动态路径整合。这一神经机制为自然语言处理(NLP)的深层语义分析提供了以下关键启示和影响&am…