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

溫馨提示×

溫馨提示×

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

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

怎么在Python中利用流式讀取大文件

發布時間:2021-05-06 17:27:30 來源:億速云 閱讀:259 作者:Leah 欄目:編程語言

怎么在Python中利用流式讀取大文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

1、使用 read 方法分塊讀取

使用更底層的file.read()方法,與直接循環迭代文件對象不同,每次調用file.read(chunk_size)會直接返回從當前位置往后讀取 chunk_size 大小的文件內容,不必等待任何換行符出現。

def count_nine_v2(fname):
    """計算文件里包含多少個數字 '9',每次讀取 8kb
    """
    count = 0
    block_size = 1024 * 8
    with open(fname) as fp:
        while True:
            chunk = fp.read(block_size)
            # 當文件沒有更多內容時,read 調用將會返回空字符串 ''
            if not chunk:
                break
            count += chunk.count('9')
    return count

2、利用生成器解耦代碼

可以定義一個新的chunked_file_reader生成器函數,由它來負責所有與“數據生成”相關的邏輯。

count_nine_v3里面的主循環就只需要負責計數即可。

def chunked_file_reader(fp, block_size=1024 * 8):
    """生成器函數:分塊讀取文件內容
    """
    while True:
        chunk = fp.read(block_size)
        # 當文件沒有更多內容時,read 調用將會返回空字符串 ''
        if not chunk:
            break
        yield chunk


def count_nine_v3(fname):
    count = 0
    with open(fname) as fp:
        for chunk in chunked_file_reader(fp):
            count += chunk.count('9')
    return count

使用 iter(callable,sentinel) 的方式調用它時,會返回一個特殊的對象,迭代它將不斷產生可調用對象 callable 的調用結果,直到結果為 setinel 時,迭代終止。

def chunked_file_reader(file, block_size=1024 * 8):
    """生成器函數:分塊讀取文件內容,使用 iter 函數
    """
    # 首先使用 partial(fp.read, block_size) 構造一個新的無需參數的函數
    # 循環將不斷返回 fp.read(block_size) 調用結果,直到其為 '' 時終止
    for chunk in iter(partial(file.read, block_size), ''):
        yield chunk

關于怎么在Python中利用流式讀取大文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

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

AI

敦化市| 天镇县| 喜德县| 孟村| 高尔夫| 肇源县| 法库县| 清原| 兰考县| 抚顺县| 云阳县| 开鲁县| 陆良县| 福清市| 渭南市| 怀宁县| 黄平县| 吉林省| 灵宝市| 福海县| 青浦区| 沅陵县| 堆龙德庆县| 克拉玛依市| 平乐县| 拉萨市| 海丰县| 宜章县| 宁德市| 搜索| 城步| 松潘县| 渝北区| 扶沟县| 南陵县| 乌苏市| 株洲市| 满城县| 玉林市| 阳原县| 盱眙县|