91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何流式讀取數G超大文件

發布時間:2022-03-16 15:01:48 來源:億速云 閱讀:546 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關python如何流式讀取數G超大文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

如何流式讀取數G超大文件

使用 with...open... 可以從一個文件中讀取數據,這是所有 Python 開發者都非常熟悉的操作。

但是如果你使用不當,也會帶來很大的麻煩。

比如當你使用了 read 函數,其實 Python 會將文件的內容一次性的全部載入內存中,如果文件有 10  個G甚至更多,那么你的電腦就要消耗的內存非常巨大。

# 一次性讀取 with open("big_file.txt", "r") as fp:     content = fp.read()

對于這個問題,你也許會想到使用 readline 去做一個生成器來逐行返回。

def read_from_file(filename):     with open(filename, "r") as fp:         yield fp.readline()

可如果這個文件內容就一行呢,一行就 10個G,其實你還是會一次性讀取全部內容。

最優雅的解決方法是,在使用 read 方法時,指定每次只讀取固定大小的內容,比如下面的代碼中,每次只讀取 8kb 返回。

def read_from_file(filename, block_size = 1024 * 8):     with open(filename, "r") as fp:         while True:             chunk = fp.read(block_size)             if not chunk:                 break              yield chunk

上面的代碼,功能上已經沒有問題了,但是代碼看起來代碼還是有些臃腫。

借助偏函數 和 iter 函數可以優化一下代碼

from functools import partial  def read_from_file(filename, block_size = 1024 * 8):     with open(filename, "r") as fp:         for chunk in iter(partial(fp.read, block_size), ""):             yield chunk

關于“python如何流式讀取數G超大文件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂南县| 洛宁县| 萨迦县| 黎平县| 水城县| 什邡市| 日照市| 正蓝旗| 临夏市| 湘乡市| 乌拉特后旗| 南靖县| 磐安县| 洛隆县| 东辽县| 岳池县| 定边县| 芦溪县| 博罗县| 名山县| 刚察县| 汉沽区| 探索| 股票| 疏附县| 叶城县| 千阳县| 中宁县| 麻栗坡县| 新宾| 增城市| 永定县| 黄大仙区| 洪雅县| 眉山市| 营口市| 临洮县| 邹平县| 涿鹿县| 云和县| 罗平县|