使用文件对象读取Python文件内容

时间:2024-10-26 14:57:31

1、使用open函数可以打开文件并返回一个文件对象,返回的文件对象用来读取和写入文件内容。那么,如何使用文件对象来读取文件内容呢?如何让读取的文件内容初始化一个Python列表呢?文本文件和二进制文件使用文件对象读取文件内容时,要根据文件的不同存储类型选择不同的读取方式。一般来说,文件的存储类型主要分为文本文件和二进制文件两大类。文本文件就是可以用记事本打开的文件,文本文件主要存储了文字信息及换行符等控制符号,任何程序都可以打开文本文件并能正确显示文件内容;二进制文件主要是以二进制方式来存储内容,二进制文件很难被用户或其它程序理解,读取后也无法正确显示,只有创建它的程序才能够正确读取和显示,如DOC文档、图片文件、音视频等文件。文件对象提供了三种读取文件内容的方法,分别是read、readline、readlines。其中read方法即可以读取文本文件也可以读取二级制文件,readline和readlines方法只能读取文本文件。下面分别予以说明。使用read方法读取文件内容read方法按字节读取文件内容,可以设定读取的字节数,read语法如下:content = fileobj.read(size=-1);read方法的size参数用于指定需要从文件读取的字节数,如果调用read方法时,没有给出size参数(默认值为-1),文件内容会被全部读取。read会把读取的文件内容存储到content变量,content变量的类型与open函数使用的文件打开模式有关,如果open函数以默认的文本模式打开,content变量为字符串类型,如果以二进制模式打开,content变量为byte类型。例1:使用r模式打开并读取文本内容。

使用文件对象读取Python文件内容

2、open函数以文本r模式打开文本文件,打开成功后返回文件对象并赋值给fp,fp调用read方法读取全部文件内容,读取的文件内容存储到content字符串变量,读取文件结束后,需要调用close方法关闭文件。最后使用print函数输出content存储的文件内容。程序输出结果如下图所示。

使用文件对象读取Python文件内容

3、例2:使用r模式打开并读取二进制文件。

使用文件对象读取Python文件内容

4、open函数以文本r模式打开二进制文件spring.png图片文件时,会出现错误。这是因为当open函数以文本方式打开二进制文件时,read方法在读取文件内容时,会将读取的字符编码通过UnicodeDecode解码器进行解码,但文件内容并没有进行字符编码,因此报解码错误。错误描述如下图所示。

使用文件对象读取Python文件内容

5、打开二进制文件的正确方式是使用‘rb’、‘rb+’等二进制打开模式。下面的代码是打开二进制文件的正确方式。

使用文件对象读取Python文件内容

6、使用‘rb’模式可以正确打开二进制文件,read方法会以字节流方式读取文件内容,content为byte数据类型的变量,使用print方法输出content时,会输出字节信息。输出结果如下图所示,因字节信息内容过长,截图不完整。

使用文件对象读取Python文件内容

7、使用readline和方法读取文件内容readline只适合读取文本文件,它用于顺序读取文本文件的一行(读取下个行结束符之前的所有字符),读取的内容作为字符串返回。readline语法如下:content = fileobj.readline(size=-1);readline方法的size参数同read方法相同,也是用于指定需要从文件读取的字节数,默认值为-1,表示读至每行的结束符。如果设定了读取的字节数,readline读取size个字节后,可能会返回不完整的行。readline比较适合读取较大的文本文件,这些文件不适合一次性读入,而是边读取边处理文件。例3:使用文本文件初始化列表。

使用文件对象读取Python文件内容

8、Python列表可以使用文本文件内容来初始化。具体方法是将列表内容存储到文本文件中,每一行作为一个列表元素。程序打开文件后,使用readline方法顺序读取文本行,每读取一行文本就将该文本加入到列表中。代码设置了布尔变量done,用于标记文件是否读取结束,初始值为False,当文件读取结束后赋值为True。读取文件的过程采用循环语句,在循环过程中调用readline方法读取文本行,并判断读取的文本行是否为空,如果为空说明已经读取到文件的结尾,将布尔变量done赋值为True结束循环,若不为空将读取的文本行添加到列表中。程序输出结果如下图所示。

使用文件对象读取Python文件内容

9、readline和readlines的区别readline和readlines的语法基本相同,但功能上有所区别。readlines会读取文件中的所有文本行,并返回一个字符串列表,适合于读取较小的文本文件。使用readlines方法可以简化例3的代码。因为readlines会读取文件中的所有文本行,因此不再需要设置一个布尔变量用于标记文件是否读取完成。同时readlines读取完成后返回一个字符串列表,对字符串列表的处理可以使用for …… in…… 语句进行处理。

使用文件对象读取Python文件内容
© 手抄报圈