一、文件讀取的基礎知識
Python具有很強的文件操作能力,可以對文件進行讀取、寫入、追加等操作。文件讀取是Python操作文件的一項基礎操作,Python有三種文件讀取模式:文本模式(Text mode)、二進位模式(Binary mode)、Unicode模式(Unicode mode)。文本模式一般用於讀寫普通文本文件,二進位模式用於讀寫二進位文件(比如圖片、音頻文件等)。
而在Python中,開始讀取文件之前,我們需要明確以下幾個概念:
文件名:包括文件目錄和文件名,既可以絕對路徑,也可以是相對路徑;
文件打開模式:讀取模式還是覆蓋模式;
字元編碼:文件編碼格式,常用的有UTF-8、ANSI等;
文件讀取開始位置:是否從文件起始位置進行讀取數據。
二、Python快速讀取文本內容方法
在使用Python做數據處理時,經常需要大量讀取文本文件中的數據,一般情況下使用Python內置函數open()函數打開文件,然後進行循環readline()或readlines()方式來進行讀取,但是,這種方法對於大文件處理效率比較低,需要比較長的處理時間。
為此,Python提供了一個快速讀取文本文件內容的方法:使用with open()方式結合yield生成器,這種方法可以快速讀取大型文本文件內容,對於大數據量的處理非常高效。
def read_large_file(file_path): with open(file_path, 'r', encoding='utf-8') as f: while True: data = f.read(100000) if not data: break yield data
代碼解釋:
1、使用with open()方法打開文件,將文件對象存儲在f中;
2、定義一個死循環,代表不斷從文件中讀取數據,每次讀取100000個字元;
3、如果當前讀取的數據為空,則退出循環,否則使用yield返回數據。
三、Python性能測試
為了驗證with open()方式的效率,我們進行了測試。測試方法為:使用with open()方式一次性讀取1.17G的txt文件,並記錄整個過程的時間。測試結果如下:
import time def read_file(file_path): try: s = time.time() with open(file_path, 'r') as f: data = f.read() e = time.time() print('Cost {:.3f} seconds'.format(e - s)) return data except Exception as e: print(e) return None if __name__ == '__main__': read_file('test.txt')
測試結果:Cost 0.523 seconds,可以驗證這種方式讀取文本文件的效率非常高。
四、總結
Python的文件操作是Python的一個非常實用的特性,學好文件讀取操作是Python編程中必不可少的一部分,尤其是在數
據處理和分析需要處理大數據量的時候,使用快速讀取文本文件內容的技巧可以大幅度提高程序的效率,使程序處理起來
更加高效、流暢。
原創文章,作者:SMZHR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331340.html