真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),蒙陰網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蒙陰等地區(qū)。蒙陰做網(wǎng)站價(jià)格咨詢:18980820575

python可以做什么

Python是一種編程語(yǔ)言,內(nèi)置了許多有效的工具,Python幾乎無(wú)所不能,該語(yǔ)言通俗易懂、容易入門(mén)、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門(mén)的大數(shù)據(jù)分析,人工智能,Web開(kāi)發(fā)等。

1、使用 read 方法分塊讀取

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

def count_nine_v2(fname):
    """計(jì)算文件里包含多少個(gè)數(shù)字 '9',每次讀取 8kb
    """
    count = 0
    block_size = 1024 * 8
    with open(fname) as fp:
        while True:
            chunk = fp.read(block_size)
            # 當(dāng)文件沒(méi)有更多內(nèi)容時(shí),read 調(diào)用將會(huì)返回空字符串 ''
            if not chunk:
                break
            count += chunk.count('9')
    return count

2、利用生成器解耦代碼

可以定義一個(gè)新的chunked_file_reader生成器函數(shù),由它來(lái)負(fù)責(zé)所有與“數(shù)據(jù)生成”相關(guān)的邏輯。

count_nine_v3里面的主循環(huán)就只需要負(fù)責(zé)計(jì)數(shù)即可。

def chunked_file_reader(fp, block_size=1024 * 8):
    """生成器函數(shù):分塊讀取文件內(nèi)容
    """
    while True:
        chunk = fp.read(block_size)
        # 當(dāng)文件沒(méi)有更多內(nèi)容時(shí),read 調(diào)用將會(huì)返回空字符串 ''
        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) 的方式調(diào)用它時(shí),會(huì)返回一個(gè)特殊的對(duì)象,迭代它將不斷產(chǎn)生可調(diào)用對(duì)象 callable 的調(diào)用結(jié)果,直到結(jié)果為 setinel 時(shí),迭代終止。

def chunked_file_reader(file, block_size=1024 * 8):
    """生成器函數(shù):分塊讀取文件內(nèi)容,使用 iter 函數(shù)
    """
    # 首先使用 partial(fp.read, block_size) 構(gòu)造一個(gè)新的無(wú)需參數(shù)的函數(shù)
    # 循環(huán)將不斷返回 fp.read(block_size) 調(diào)用結(jié)果,直到其為 '' 時(shí)終止
    for chunk in iter(partial(file.read, block_size), ''):
        yield chunk

關(guān)于怎么在Python中利用流式讀取大文件問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


當(dāng)前文章:怎么在Python中利用流式讀取大文件
網(wǎng)頁(yè)地址:http://weahome.cn/article/jojpdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部