Python入门基础系列(十三)——文件的读写操作
off999 2024-09-23 11:29 34 浏览 0 评论
Python文件处理是程序员和自动化测试人员的基本主题之一。因为它们都需要使用文件来编写文件或从中读取数据。另外,如果您还没有意识到,I/O操作是程序可能出错的地方。因此,在实现报告或其他用途的文件处理时,应该非常小心。优化单个文件操作可以帮助您生成高性能的应用程序或自动化软件测试的健壮稳定的解决方案。
我们举一个例子,比方说您将在Python中创建一个包含大型项目的工作流程。那么,你很有必要创建一个日志文件。而且您还将对日志文件执行读取/写入操作。日志文件是调试大型程序的好工具。从一开始就考虑可扩展设计总是更好,因为稍后您不会后悔自己没有这样做。
以下是Python中文件处理的基本定义:“ 文件是系统存储器上的一个命名位置,用于记录数据以供以后访问。它可以在非易失性存储器(即硬盘)中实现持久存储。“
使用Python复制文件的 9种方法。
在Python中,文件处理按以下顺序进行。
1.打开一个返回文件句柄的文件。
2.使用句柄来执行读取或写入操作。
3.关闭文件句柄。
在使用Python对文件进行读或写操作之前,需要先打开它。随着读/写事务完成,您应该关闭它以释放与该文件绑定的资源。
在接下来的部分中,我们将逐一介绍所有Python文件处理主题。由于它是一个基于示例的Python教程,所以您最好打开一个Python控制台来测试代码。
首先,让我们看看本篇文章中涵盖的Python文件处理的目录。
本篇文章目录:
1.用Python打开一个文件
a)Python open()文件方法
b)在Python中打开打开模式
c)Python文件对象属性
例如:Python文件属性正在运行
d)Python文件编码
2.用Python关闭文件
a)Python close()文件方法
i.示例-1:Python中的基本关闭操作
ii.示例2:在Python中使用异常与关闭操作
iii.示例-3:在Python中使用'with'子句关闭文件
3.Python写入操作
a)write()文件方法
i.示例:用Python写入文件
4.Python读取操作
a)示例:从Python中的文件读取
5.在Python中读取文件的位置
a)示例:在Python中设置偏移量
6.在Python中重命名和删除文件
a)rename()方法
b)remove()方法
7.Python文件对象方法
1- Python文件处理:用Python打开文件
要读取或写入文件,您需要先打开它。要在Python中打开文件,请使用其构建的open()函数。这个函数返回一个文件对象,即句柄。您可以使用它来读取或修改文件。
1.1-Python Open()文件方法
1.2-
file object = open(file_name [, access_mode][, buffering])
以下是参数详情。
<access_mode> -它是一个表示文件打开模式的整数,例如读取,写入,追加等。它是一个可选参数。默认情况下,它被设置为只读<r>。在这种模式下,我们从文件中读取文本形式的数据。另一方面,二进制模式返回字节。访问非文本文件比如图像或Exe文件是最好的。请参阅下一节中的表格。它列出了可用的访问模式。
< buffering > -默认值为0,这意味着不会发生缓冲。如果该值为1,则在访问文件时会进行行缓冲。如果它大于1,那么缓冲操作将按照缓冲区大小运行。在负值的情况下,考虑默认行为。
<file_name> -这是一个字符串,表示您想要访问的文件的名称。
1.2-在Python中文件的打开模式
1.3- Python文件对象属性
当你调用Python open()函数时,它会返回一个文件句柄的对象。另外,你应该知道Python文件有几个链接属性。我们可以利用文件句柄来列出它所属文件的属性。
有关文件属性的更多信息,请参阅下表。
例如:Python文件属性正在运行。
File name: app.log
File state: False
Opening mode: wb
Softspace flag: 0
1.4- Python文件编码
在Python 3.x中,字符串(文本)和字节(8位)之间有明显的区别。它指出,字符'a'不代表ASCII值97,直到你指定它。所以,当你想在文本模式下使用文件时,最好提一下正确的编码类型。
另外,Python在磁盘上以字节的形式存储文件,因此您需要在读取之前使用字符串对它们进行解码。而且,类似地,在将文本写入文件时对它们进行编码。
默认情况下,Python支持平台相关的编码。因此,如果你不改变它,那么它被设置为Windows的<cp1252>和Linux的<utf-8>。
因此,文档说在Python中打开文件时引用所需的编码。请参阅下面的Python代码片段。
f = open ('app.log' ,mode = 'r' ,encoding = 'utf-8' )
有关说明,您应该在Python 2.x中导入<io>模块以启用编码功能。Python 3.x是隐式的。
2- Python文件处理:用Python关闭文件
工作完成后关闭文件始终是最佳做法。但是,Python运行垃圾收集器来清理未使用的对象。但是你必须自己做,而不要把它留给GC。
文件操作的Close()方法
Python提供了<close()>方法来关闭文件。
在关闭文件时,系统释放分配给它的所有资源。而且这很容易实现。
请参阅下面的代码片段。
示例-1:Python中的基本关闭操作
最基本的方法是调用Python close()方法
f = open("app.log",encoding = 'utf-8')
f.close()
示例2:在Python中使用异常与关闭操作
假设在文件上执行某些操作时发生异常。在这种情况下,代码退出而不关闭文件。所以最好把代码放在一个<try-finally>块中。
所以,即使出现异常,上面的代码将确保您的文件正确关闭。
示例-3:在Python中使用'With'子句关闭文件
另一种关闭文件的方法是使用with语句。它确保当with语句中的块执行完成时文件被关闭。这种方法的优点在于它不需要明确调用close()方法。
with open('app.log', encoding = 'utf-8') as f:
3- Python文件处理:执行写入操作
在准备将数据写入文件时,首先使用模式(read/write/append)打开它。在这里查看所有可用文件模式的列表。
您甚至可以使用追加模式执行相同操作。另外,如果您使用了<w>模式,那么它将从文件中清除现有的数据。所以当你选择它时你必须注意到这个事实。
Write()文件方法。
Python提供了write() 方法来将字符串或字节序列写入文件。此函数返回一个数字,它是在单个写入调用中写入的数据的大小。
示例:使用Python读取/写入文件。
4- Python文件处理:执行读取操作
要从文件中读取数据,首先,您需要以阅读模式打开它。然后,您可以调用Python提供的用于从文件读取的任何方法。
通常,您可以使用Python <read(size)>函数来读取文件大小的内容。如果你没有明确读取大小,那么它会读取整个文件。
示例:从Python中的文件读取
5- Python文件处理:文件读取位置
<tell()>方法为您提供文件中文件指针的当前偏移量。
<seek(offset [,from])>方法可以帮助您更改文件中文件指针的位置。
<offset>参数表示位移的大小,而<from>参数表示起点。
如果<from>值为0,那么移位将从根级开始。如果值为1,则参考位置将成为当前位置。而且,如果它是2,那么文件的结尾将作为参考位置。
示例:在Python中设置偏移量
6- Python文件处理:在Python中重命名和删除文件
当你使用<read/write>函数时,你可能还需要在Python中重命名/删除一个文件。所以,Python中有一个<os>模块,它支持文件<rename / delete>操作.因此您首先应该在您的Python脚本中导入<os>模块。
Rename()文件方法
os.rename(cur_file, new_file)
<rename()>方法接受两个参数,即当前文件名和新文件名。
以下是将现有文件<app.log>重命名为<app1.log>的示例。
Remove()文件方法
os.remove(file_name)
<remove()>方法删除方法中传入的指定文件.
以下是删除现有文件<app1.log>的示例。
7- Python文件处理:文件对象方法
到目前为止,我们只与您分享了一些可用于Python中的文件处理的功能。但是Python文件处理的方法还有更多。由于Python的open()方法返回一个我们称之为文件句柄的对象。所以,Python包含了一系列方法使您可以使用此对象对文件进行操作.
本章小结——文件的读写操作
我们希望上面的Python文件处理教程能帮助你更好的学习Python。如果您希望阅读更多这样的文章,那么请进一步分享本文章。
本系列文章列表:
相关推荐
- apisix动态修改路由的原理_动态路由协议rip的配置
-
ApacheAPISIX能够实现动态修改路由(DynamicRouting)的核心原理,是它将传统的静态Nginx配置彻底解耦,通过中心化配置存储(如etcd)+OpenRest...
- 使用 Docker 部署 OpenResty Manager 搭建可视化反向代理系统
-
在之前的文章中,xiaoz推荐过可视化Nginx反向代理工具NginxProxyManager,最近xiaoz还发现一款功能更加强大,界面更加漂亮的OpenRestyManager,完全可以替代...
- OpenResty 入门指南:从基础到动态路由实战
-
一、引言1.1OpenResty简介OpenResty是一款基于Nginx的高性能Web平台,通过集成Lua脚本和丰富的模块,将Nginx从静态反向代理转变为可动态编程的应用平台...
- OpenResty 的 Lua 动态能力_openresty 动态upstream
-
OpenResty的Lua动态能力是其最核心的优势,它将LuaJIT嵌入到Nginx的每一个请求处理阶段,使得开发者可以用Lua脚本动态控制请求的生命周期,而无需重新编译或rel...
- LVS和Nginx_lvs和nginx的区别
-
LVS(LinuxVirtualServer)和Nginx都是常用的负载均衡解决方案,广泛应用于大型网站和分布式系统中,以提高系统的性能、可用性和可扩展性。一、基本概念1.LVS(Linux...
- 外网连接到内网服务器需要端口映射吗,如何操作?
-
外网访问内网服务器通常需要端口映射(或内网穿透),这是跨越公网与私网边界的关键技术。操作方式取决于网络环境,以下分场景详解。一、端口映射的核心原理内网服务器位于私有IP地址段(如192.168.x.x...
- Nginx如何解决C10K问题(1万个并发连接)?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。Nginx是大型架构的必备中间件,下面我就全面来详解NginxC10k问题@mikechen文章来源:mikec...
- 炸场!Spring Boot 9 大内置过滤器实战手册:从坑到神
-
炸场!SpringBoot9大内置过滤器实战手册:从坑到神在Java开发圈摸爬滚打十年,见过太多团队重复造轮子——明明SpringBoot自带的过滤器就能解决的问题,偏偏要手写几十...
- WordPress和Typecho xmlrpc漏洞_wordpress主题漏洞
-
一般大家都关注WordPress,毕竟用户量巨大,而国内的Typecho作为轻量级的博客系统就关注的人并不多。Typecho有很多借鉴WordPress的,包括兼容的xmlrpc接口,而WordPre...
- Linux Shell 入门教程(六):重定向、管道与命令替换
-
在前几篇中,我们学习了函数、流程控制等Shell编程的基础内容。现在我们来探索更高级的功能:如何控制数据流向、将命令链接在一起、让命令间通信变得可能。一、输入输出重定向(>、>>...
- Nginx的location匹配规则,90%的人都没完全搞懂,一张图让你秒懂
-
刚配完nginx网站就崩了?运维和开发都头疼的location匹配规则优先级,弄错顺序直接导致500错误。核心在于nginx处理location时顺序严格:先精确匹配=,然后前缀匹配^~,接着按顺序正...
- liunx服务器查看故障命令有那些?_linux查看服务器性能命令
-
在Linux服务器上排查故障时,需要使用一系列命令来检查系统状态、日志文件、资源利用情况以及网络状况。以下是常用的故障排查命令,按照不同场景分类说明。1.系统资源相关命令1.1查看CPU使...
- 服务器被入侵的常见迹象有哪些?_服务器入侵可以被完全操纵吗
-
服务器被入侵可能会导致数据泄露、服务异常或完全失控。及时发现入侵迹象能够帮助你尽早采取措施,减少损失。以下是服务器被入侵的常见迹象以及相关的分析与处理建议。1.服务器被入侵的常见迹象1.1系统性能...
- 前端错误可观测最佳实践_前端错误提示
-
场景解析对于前端项目,生产环境的代码通常经过压缩、混淆和打包处理,当代码在运行过程中产生错误时,通常难以还原原始代码从而定位问题,对于深度混淆尤其如此,因此Mozilla自2011年开始发起并...
- 8个能让你的Kubernetes集群“瞬间崩溃”的配置错误
-
错误一:livenessProbe探针“自杀式”配置——30秒内让Pod重启20次现象:Pod状态在Running→Terminating→CrashLoopBackOff之间循环,重启间隔仅...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- apisix动态修改路由的原理_动态路由协议rip的配置
- 使用 Docker 部署 OpenResty Manager 搭建可视化反向代理系统
- OpenResty 入门指南:从基础到动态路由实战
- OpenResty 的 Lua 动态能力_openresty 动态upstream
- LVS和Nginx_lvs和nginx的区别
- 外网连接到内网服务器需要端口映射吗,如何操作?
- Nginx如何解决C10K问题(1万个并发连接)?
- 炸场!Spring Boot 9 大内置过滤器实战手册:从坑到神
- WordPress和Typecho xmlrpc漏洞_wordpress主题漏洞
- Linux Shell 入门教程(六):重定向、管道与命令替换
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)