天天看點

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()方法

,它每次将資料

存儲在清單中

,每行都是一個元素,相對讀取大檔案而言比較占用記憶體。