人生苦短,我学python!
目录
前沿
对于小数据量项目可以采用嵌入式方法实现数据的载入,但如果面对统计类问题,有几万甚至几百万组数据之时,再采用嵌入式方法显然不太合适,从今天我们便开始,我们将面对一个崭新的世界--文件。
这里说的文件可不单单指文本类文件,.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,关注我,不迷路!