天天看點

大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

檢視上一節:檔案的簡單讀取

讀取大檔案

上節課我們講了可以使用read來讀取檔案,而且使用open來打開檔案的話是要考慮檔案的編碼格式的,另外關于二進制檔案如何打開後續再說。

read()使用的幾點注意:

1、如果直接調用read()它會将文本檔案的所有内容全部都讀取出來;

2、如果要讀取的檔案較大的話,會一次性将檔案的内容加載到記憶體中,容易導緻記憶體洩漏;是以對于較大的檔案,不要直接調用read()。

那該如何讀取大檔案呢?首先使用help檢視一下read()的資訊:

help(file_obj.read)           

執行結果為:

大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

可以看到有一個size的資料,并且大小為-1。

注意:

1、 read()可以接收一個size作為參數,該參數用來指定要讀取的字元的數量;

2、預設值為-1,它會讀取檔案中的所有字元;

3、可以為size指定一個值,這樣read()會讀取指定數量的字元;

4、每一次讀取都是從上次讀取到位置開始讀取的

5、如果字元的數量小于size,則會讀取剩餘所有的

6、如果已經讀取到了檔案的最後了,則會傳回''空串

代碼如下:

file_name = 'demo2.txt'

try:
    with open(file_name,encoding='utf-8') as file_obj:

        # content = file_obj.read(-1)
        content = file_obj.read(6)#指定讀取6個字元
        content = file_obj.read(6)#從上次讀取到的位置開始
        print(content)
        print(len(content))
except FileNotFoundError :
    print(f'{file_name} 這個檔案不存在!')           
大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

如果再添加2行

content = file_obj.read(6))

大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

再添加一行就不再有字元串可以讀取了,即傳回空串:

大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

讀取大檔案的方式

file_name = 'demo.txt'

try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定義一個變量,來儲存檔案的内容
        file_content = ''
        # 定義一個變量,來指定每次讀取的大小
        chunk = 100
        # 建立一個循環來讀取檔案内容
        while True:
            # 讀取chunk大小的内容
            content = file_obj.read(chunk)

            # 檢查是否讀取到了内容
            if not content:
                # 内容讀取完畢,退出循環
                break

            # 輸出内容
            # print(content,end='')
            file_content += content

except FileNotFoundError :
    print(f'{file_name} 這個檔案不存在!')

print(file_content)           
大檔案的讀取方式 | Python從入門到精通:高階篇之四十七讀取大檔案

點選檢視配套視訊教程

擷取更多Python内容,請訂閱

Python學習站

官方技術圈!