百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python实战012:open打开指定文件及常见操作指南

off999 2024-10-02 18:38 41 浏览 0 评论

操作系统一般不允许程序直接操作磁盘文件的,文件在磁盘上的读写都是由操作系统提供的,文件操作包括创建、删除、修改权限、读取、写入等。要想实现对文件的操作就需要请求操作系统打开一个文件对象,然后通过操作系统提供的接口来实现对文件读写的相关操作。读写文件是最常见的 I/O 操作,Python内置相关API可以帮助我们快速的实现文件读写操作。

文件对象

Python内置的 open() 函数可以用于打开指定文件 ,该函数会返回一个文件对象(该对象包含了当前文件拥有的属性信息,相当于文件句柄)。参数file为要创建或打开文件的文件名称,参数mode用于指定文件的打开模式(可选),参数buffering用于指定对文件做读写操作时是否使用缓冲区。在打开文件之后就可调用文件对象的属性和方法,完成对文件的读/写操作之后最后需要关闭该文件,通过文件对象的close() 函数来实现即可。

打开模式

文件打开是可以指定其打开的模式,该参数通过mode来指定【默认模式为只读(r)】。选择不同的打开模式决定了后续可以对文件进行操作,如果使用 r 模式打开的文件则只能读取文件而无法修改文件内容。open()提供了多种打开模式,下面列出了对应的打开模式和说明:

设置缓冲

缓存是数据交换的缓冲区,打开缓冲后当程序执行输出时会先将数据输出到缓冲区中,当要读取数据时会首先从缓存中查找需要的数据,如果找到了就直接执行没有再去内存中找。缓存的运行速度比内存快得多,可以帮助硬件更快地运行程序。所以使用open'的时候建议打开缓冲,这样程序执行 I/O 操作时将具有更好的性能。缓冲通过参数buffing来定义, 0代表不缓冲,1或大于1使用的缓冲区字节数大小,1表示使用系统默认缓冲字节数1024。

更新缓存

一般情况下文件关闭后会自动刷新到硬盘中并刷新缓冲区,如果你想在文件操作过程中更新缓冲时可以使用 flush()函数。该函数可以将缓冲强制刷新到硬盘中并清空缓冲区,当操作的文件较大时可以使用该函数及时的更新缓冲区。

文件属性

文件打开之后我们就可以获得该文件对象,该对象中包含了文件的一些属性。

文件读取

文件对象中提供了很多API可以用来读取文件内容,读取文件内容可使用 read()、readline() 以及 readlines() 函数。 read()会读出全部内容,readline()会逐行读取内容。readlines()则将指定的行数内容读取出来并返回一个列表,如果没有指定行数则全部输出。

文件写入

要实现内容的写入我们在打开文件时就需要先指定文件对象为可写模式,通过参数mode指定文件打开模式为读写(r+)。文件对象中同样提供了很多API可以用来写入文件内容,向文件中写入内容可以使用 write() 函数和writelines() 函数。write() 函数和read()、readline()函数对应可以将字符串写入文件(多个字符串写入会自动追到),writelines() 函数则与readlines()函数对应用来写入字符串列表的。readlines写入列表数据时不会自动换行,如果希望根据列表元素换行则需要在列表中显式的加入换行符。

文件定位

文件对象提供了一个tell()函数用来定位当前文件位置(这个定位的是字节位,计算机的最小存在单位),下次继续写入的时候就会知道从哪里开始继续。如果想改变当前文件的位置我们可以通过函数seek(offset [,from])来指定偏移量,offset 表示要移动的字节数(默认从起始位置),from指定开始移动字节的参考位置(可选)。from设置为0则以文件起始位置开始,当为1则从当前位置开始,当为2时从文件末尾开始编译offset个字节量。

错误解决:can't do nonzero cur-relative seeks

在使用seek()函数时你可能会遇到这样的错误提示:“io.UnsupportedOperation: can't do nonzero cur-relative seeks”,这是因为没有指定b模式选项打开文件。r只允许从文件头开始计算相对位置,从文件其他位置计算时就会引发异常。这时候如果是写入就需要注意参数类型了,请求参数变成bytes对象了而不是str。

关闭文件

文件操作完之后应该及时的关闭,因为文件打开之后会产生缓存占用系统资源。而且如果文件被占用也容易造成其他程序执行异常,所以当我们操作完成之后应该及时关闭。关闭已经打开的文件可以使用close()函数来实现,关闭后的文件不能再进行读写操作(需要重新打开)。为了方便关闭文件Python增加了with功能,当with体执行完将自动执行close()函数来关闭打开的文件。

总结:

Python操作文件还是相当的简单高效的,利用open() 函数就可以快速的打开一个文件并创建文件流对象,这时候我们就可以调用它提供的方法进行读写操作。with可以创建一个临时的运行环境,运行环境中的代码执行完后自动安全退出环境。这样就可以不用close()方法关闭文件,无论在文件使用中遇到什么问题都能安全的退出并给出报错信息。以上内容是小编给大家分享的【Python实战012:open打开指定文件及常见操作指南】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

为了方便学习,下面附上本文用到的源码:

with open(filepath,mode='r',encoding='utf-8') as rf:
    rf.read()      //读取整个文件对象
    rf.readline()  //读取每一行
    rf.readlines() //读取指定行内容,未指定则返回全部
    rf.readable()  //检查文件是否可读
with open('./a.txt', 'r+', encoding='utf-8', buffering=1024) as wf:
    str = "测试数据\n"
    str_list= ['1\n','2\n','3\n','4']
    wf.write(str)
    wf.writelines(str_list)
with open('./a.txt', 'rb+', buffering=1024) as wf:
    str1 = "件对象提供了一个tell()函数用来定位当前文件位置"
    wf.write(str1)  # 错误 :TypeError: a bytes-like object is required, not 'str'
    wf.write(str1.encode())
    wf.seek(6, 0)    #从起始位置开始偏移6个字节
    wf.write('000'.encode())
    wf.seek(9, 1)   # 从当前位置开始偏移9个字节
    wf.write('111'.encode())
    wf.seek(6, 2)   # 从末尾位置开始偏移6个字节
    wf.write('222'.encode())
with open('./a.txt',mode='r') as rf:
    rf.read()
------------------ 等效 ----------------------
rf=open('./a.txt',mode='r')
rf.read()
rf.close()

相关推荐

无线路由器密码在哪看(无线路由器密码在哪里看)

笔记本已连接wifi密码查看:1.同时按住按键上面的Win和R这2个按键,打开运行程序。2.在运行程序中输入“ncpa.cpl”,并点击“确定”。3.找到WLAN或者无线网络连接图标,...

office2003的主要功能(word2003的主要功能)

是一套Office2003专业版的精简版,包含常用的Word、Excel、PowerPoint三个应用,使用者甚多。楼主如果有需要,请上电脑在本帖下载我的附件。

ie浏览器异常怎么修复(ie浏览器出现问题怎么办)
  • ie浏览器异常怎么修复(ie浏览器出现问题怎么办)
  • ie浏览器异常怎么修复(ie浏览器出现问题怎么办)
  • ie浏览器异常怎么修复(ie浏览器出现问题怎么办)
  • ie浏览器异常怎么修复(ie浏览器出现问题怎么办)
怎样准备一个带pe的u盘的(带pe系统的u盘)

一、U盘安装系统前期准备:  1、首先需要预备一个空的4G或以上U盘,用来存储启动程序跟系统文件。  2、接着我们需要安装的ghost系统。  3、U盘启动盘制作工具:U盘启动工具  二、U盘启动盘制...

怎样拷贝文件到u盘里(怎么文件拷贝到u盘)

方法/步骤分步阅读1点击安全打开等电脑的桌面中弹出U盘插入成功的提示框之后,点击安全打开,将U盘打开。2点击文件将U盘打开之后,在电脑的桌面中找到需要拷贝的文件,点击鼠标右键等弹出序列。3点击复制弹出...

固态硬盘怎么安装win7(固态硬盘怎么安装在电脑上)
固态硬盘怎么安装win7(固态硬盘怎么安装在电脑上)

1.首选需要找一个4GB以上的U盘2.用来存放Win7的ISO镜像文件。带有光盘标识的即为“光盘映像文件”3.在点击写入之前,一定要确保U盘里面没有任何数据,如果有数据应该及时备份,否则里面的数据将被删除,不过在做完启动盘后,仍然可以向里面...

2025-12-27 13:03 off999

苹果手机忘记密码怎么办(很久没用的苹果手机忘记密码怎么办)

在苹果官网中搜索忘记iphone密码,点击置于恢复模式的链接,根据步骤完成解锁即可,以下是详细的操作步骤:方法/步骤1点击搜索图标网页上搜索进入apple官网,进入官网主页面之后,点击页面上方的放大镜...

win10系统防火墙在哪里设置(windows10的防火墙怎么设置)

Windows10的防火墙设置非常简单。首先,您可以点击“开始”菜单,然后在搜索框中输入“防火墙”来打开防火墙设置。接下来,您可以根据需要为不同的网络(包括公用网络、专用网络和域网络)设置不同的防火...

软件市场下载(软件市场下载安装)

是的,因为酷安已经被下架了,目前在所有手机自带的应用市场下载的酷安都是阉割版本。不仅是酷安,其它应用市场比如腾讯的应用宝目前在手机自带的应用商店全都已经下架了。并且申请上架也会被拒绝,拒绝理由是:“暂...

u盘有东西但是显示文件夹为空

u盘里面有文件,却显示文件夹为空是因为文件被隐藏了,开启方法如下:需要用到的工具有:电脑、U盘。1、打开我的电脑,找到并点击进入U盘,2、在U盘目录里面,点击上方的属性功能。3、在属性页面,把隐藏对勾...

五笔86版输入法下载(86版五笔安装包)

要下载王码五笔86版官方,可以前往官方网站进行下载。安装时,先打开下载的安装文件,按照提示完成安装向导。在安装过程中,可以自定义安装路径,也可以选择安装组件。安装完成后,可以在输入法设置中选择王码五笔...

360游戏中心怎么关闭(360游戏中心怎么关闭自动更新)

1.你把360卸载了,换成QQ管家2.你把360卸载,再安装的时候,别一键安装要,改为自定义安装,在安装过程中,如果有弹出窗口,上面显示360游戏大厅,你把360游戏大厅前面的那个选择口里点一下,里面...

宽带安装哪个便宜(安装宽带哪个好)

我认为光纤宽带是目前最便宜和最好用的选择。1.光纤宽带拥有更高的传输速度和稳定性,可以提供更好的上网体验。相比其他宽带类型,如ADSL和电缆宽带,光纤宽带的速度更快,不容易受到网络拥堵的影响。2....

pubg加速器免费版(pubg加速器免费版无广告)

现在加速吃鸡的游戏加速器是有专线路线的比较好,专线的稳定很多,不过目前是没有完全免费的加速软件,很多都可以先体验,注册就可以体验的,可以多去体验几款,对比一下。目前的加速器可以分为三个等级第一等级:全...

如何用u盘重装电脑系统win7(用u盘怎样重装系统win7)
如何用u盘重装电脑系统win7(用u盘怎样重装系统win7)

u盘怎么装win7系统步骤如下:1、先下载Windows7镜像,根据自己需求选择下载的版本:简化版、家庭基础版、家庭高级版、企业版等。2、下载工具软碟通。直接在搜索引擎中输入“软碟通”,选择合适的下载地址,直接下载安装即可。3、制作系统U...

2025-12-27 08:51 off999

取消回复欢迎 发表评论: