Python日常(12):文件的基本操作(打开、关闭、with上下文管理器、读写)

人生苦短,我学python!

目录

前沿

1.文件的打开与关闭

(1)open()与close()

 1)open()

2)close()

3)实例演示

(2)with上下文管理器 

2.文件的读写 

(1)常见文件读写模式与详细描述 

(2)实例演示

 作者的话


前沿

        对于小数据量项目可以采用嵌入式方法实现数据的载入,但如果面对统计类问题,有几万甚至几百万组数据之时,再采用嵌入式方法显然不太合适,从今天我们便开始,我们将面对一个崭新的世界--文件

        这里说的文件可不单单指文本类文件,.png、.jpg、.bmp(前几项为图像常见后缀)、.html、.xml.txt、.docx.csv等等,以及我们最为熟悉的.py后缀文件,都可统称之为文件。

        接下来我们就来说一说文件常见的基本操作


1.文件的打开与关闭

(1)open()与close()

 1)open()

open()返回file object,最常用的参数有两个: open(filename,mode)

mode模式图标引用Python 文件I/O | 菜鸟教程 (runoob.com)

         这里列出了很多但最最常用的也就那么几个如:'r'、'w'、'x'、'r+'、'w+'、'rb'等。如果不指定形式默认为'r'。

2)close()

        当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

3)实例演示

 

         这是一个较为简单的实例,文件的基本格式便是这个样子的,open()除了常见的两个参数之外,还包含一些其他的指定参数,最常用的便是设置编码形式,一般为'utf-8'编码,也可忽略。

(2)with上下文管理器 

        看着个格式应该基本上很清楚了,with为上下文管理器,最主要的应用便是文件读取方面,当然还有一部分其他应用,这就属于面向对象的内容了,这里不过多叙述。

        至于其具体含义,目前也无需过多了解,就把它当成一个可以自动关闭文件的形式使用便可。


2.文件的读写 

(1)常见文件读写模式与详细描述 

(2)实例演示

         这里先说一说读取方面的,上述列出了常见的三种读取方式,应该说成是比较直观的,这里就不再赘述了。在上述的实例中我们用到了一个方法为f.seek()方法,我们主要来说一说它。

        f.seek()主要是用来更改文件的指针的,我们学过C语言的话应该对指针有些许了解。我们可以想象,当采用f.read()方法完全读取之后,文件指针是不是应该在文件的最后,这是如果我们不采用f.seek()更改文件指针的位置,直接使用f.readline()所得结果应该为空吧。这里我们就不再演示,各位小朋友们可以自行验证一下可信性。

        那除了更改指针位置之外还有什么方法可以在此从文件开头读取呢?最简单朴素的方法便是关闭文件重新打开,这个相信依靠大家的聪明才智应该很好理解,这里就不过多解释了。

         我们应该知道在重新打开文件之后从开头读取,这是如果我们想要追加一般常用的方法便是采用'a'模式直接可以实现追加操作,当然也可以使用f.seek()方法,这里两种方法都列举了出来,注意在采用'a'方法时,并未对原始内容输出,这里原内容和第一个一致。这里没有输出意味着什么呢?文件指针的起始位置是在开头的,但我直接采用f.write()方法书写时,它仍然写在了文件尾部,也就是说'a'方法会在文件尾部直接实现追加,无需更改文件指针位置。

        对于较为基础的操作来说一般情况下是用不到f.seek()方法的,对于该方法的使用读者可以另行查阅资料,后续也会出相关文章。


 作者的话

        这里主要讲述了文件的打开、关闭、读取和写入的一些基本操作,上述所列举的实例中读取的全为文本文件,这似乎和最初说的图片之类的也是文件有些不符啊,既然那些也是文件,那你为什么不直接读取图片不更方便展示嘛?对于图片类文件,以及其他的以后你遇到的不知道怎么打开的文件,在python中都可以采用'b'二进制形式打开,但打开之后的后续操作就会涉及到编码与解码的问题,这些就比较深入了,如果不是专门研究这一块的,完全没有必要浪费这个精力。对于图片我们最常用的读取方式是借助PIL库实现的,当然此类库有很多很多,计算机视觉方面的函数库几乎都支持图片的直接读取,大家感兴趣可以关注一下。

        码字不易,望君三连。

        我是chandni,关注我,不迷路!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chandni.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值