亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

榆中县| 平谷区| 永州市| 张北县| 上思县| 含山县| 扬中市| 肃北| 温泉县| 贵定县| 中山市| 库尔勒市| 鄂温| 鲁甸县| 仙居县| 达州市| 沧州市| 丹阳市| 仪征市| 东至县| 海晏县| 道真| 方正县| 壶关县| 固安县| 嘉兴市| 通化县| 孟连| 旬阳县| 简阳市| 内乡县| 宁武县| 历史| 京山县| 尼勒克县| 龙陵县| 宝山区| 社会| 铁岭县| 壤塘县| 通化县|