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

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

off999 2024-10-02 18:38 47 浏览 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()

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: