天天看点

Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

前言:在上一篇博文中,我们主讲了文件的操作模式,主讲了写入数据的形式,但是没有讲到如何对文件的数据进行读取,那么本博文主针对读取数据的两种方法来进行细谈。(上一篇博文友情链接python文件操作)

文章目录:

  • 一:Read()方法:
    • 1.无参数读取:
    • 2.有参数进行读取:
  • 二.Readline()方法:
  • 三.Readlines()方法:
  • 四.建议:

😃在此之前,我们首先新建一个文件,写入一定的数据,以方便我们读取有数据😃

with open("测试","a",encoding="utf-8") as f:
    for i in range(10):
        f.write(f"您好世界:{i}\n")
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

一:Read()方法:

read()

是逐字符地读取,

read()

可以指定参数,设定需要读取多少字符,无论一个英文字母还是一个汉字都是一个字符。

read(self,n)

:

self

:这个参数指的也就是这个要的文件本身,

n

:为读取

指定个数

的数据
格式:

文件名.read()

1.无参数读取:

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    print(f.read())
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

用于从文件读取指定的字节数,如果

未给定指定读取的字节数(n)

为负

则读取所有的,也就是读取数据是

一次性全部进行读取

2.有参数进行读取:

给定

指定读取得到字节数

,则会读取到

指定的个数,

如果给定的字节数

超出

原有文本的字节数,那么

不会报错

会读取

所有

的内容:

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    print(f.read(2))
    print(f.read(67))
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

如果第一次读取一定的字符,然后第二次再进行读取,那么光标会定位在

第一次读取后的末尾

,就像上图所示效果,会在

末尾继续读取

,不会重新重头开始读取

二.Readline()方法:

readline()

:用于从文件读取整行,包括

"\n"

字符。如果指定了一个

非负数

的参数,则返回

指定大小

的字节数,包括

"\n"

字符。

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    print(f.readline())
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

由上可以看到,后面有很大的空闲,这是由于

readline()

读取到了

文本

"\n"

加上

print本身自带的换行

,所以也就是说现在有

两个换行

,所以会有这么大的空:

三.Readlines()方法:

readlines()

:用于读取所有行(直到

结束符 EOF

)并返回

列表

,如果碰到结束符

EOF

则返回

空字符串

,至于什么是

EOF

,详情请看EOF(链接取自百度百科)

readlines()

readline()

相似,都取到了

"\n"

,只不过

readlines()

将其装入到

列表中并进行返回

,但是

readline()

只是取到了,但是

不会显示"\n",

那是什么意思呢?一起来看看吧.

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    print(f.readlines())
    print(type(f.readlines()))
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

如上图所示,取到的是一个

列表

,并且后面都

带有"\n"

,这是因为在写数据时候已经换行了,它就会把换行符

显示

出来,如果不想让他们显示的话,我们可以配合

for ... in ...

来进行显示,但是我们又会发现一个问题,见图:

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    # print(f.readlines())
    for i in f.readlines():
        print(i)
    print(type(f.readlines()))
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

进行显示后后面会有那么大的空隙,这是因为换行符起到作用了,我们可以使用字符串中的

strip()

方法来进行修改,如下:

with open("测试","r",encoding="utf-8") as f:
    # for i in range(10):
    #     f.write(f"您好世界:{i}\n")
    # print(f.readlines())
    for i in f.readlines():
        ret=i.strip()
        print(ret)
    print(type(f.readlines()))
           
Python文件操作----Read()、Readline()与Readlines()详解一:Read()方法:二.Readline()方法:三.Readlines()方法:四.建议:

四.建议:

个人推荐一般使用时

尽量使用readline()方法

,因为

read()

一次性读取

所有文件数据,对于小文件来说还行,但是当文件比较大的时候就不可以了,就会很慢,也会对内存造成不必要的损耗,

readline()方法

,读取时

占用内存小,比较适合大文件

,该方法

返回一个字符串对象

,所以

推荐大家使用readline()方法

,相对于

readlines()方法

,它每次将数据

存储在列表中

,每行都是一个元素,相对读取大文件而言比较占用内存。