最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Python快速統(tǒng)計文本的行數(shù)

 更新時間:2021年12月13日 10:46:28   作者:靈劍  
這篇文章主要介紹了如何利用Python快速統(tǒng)計文本的行數(shù),要快速統(tǒng)計一個文本文件中的行數(shù),其實(shí)就是要統(tǒng)計這個文本文件中換行符的個數(shù),下面我們就一起進(jìn)入文章看看具體的操作過程吧

??通常我們會用wc -l來統(tǒng)計文件行數(shù),不過用Python統(tǒng)計也很簡單。

要快速統(tǒng)計一個文本文件中的行數(shù),其實(shí)就是要統(tǒng)計這個文本文件中換行符的個數(shù)。為了盡量提高速度,我們需要盡量多讀一些文本然后一起處理。統(tǒng)計換行符的個數(shù)可以用bytes內(nèi)置的count方法。

代碼如下:

from __future__ import print_function
import time

if __name__ == '__main__':
    import sys
    start = time.time()
    with open(sys.argv[1],'rb') as f:
        count = 0
        last_data = '\n'
        while True:
            data = f.read(0x400000)
            if not data:
                break
            count += data.count(b'\n')
            last_data = data
        if last_data[-1:] != b'\n':
            count += 1 # Remove this if a wc-like count is needed
    end = time.time()
    print(count)
    print((end-start) * 1000)

上面的代碼中,我們將文件尾沒有換行符的不完整的部分也算作一行,這跟wc -l略有區(qū)別,如果要跟wc -l一致的話,可以將帶注釋的行刪掉。

這里沒有處理universal newline、忽略空行等邏輯,如果需要這些功能,程序會變得復(fù)雜一些。

使用三個文本文件進(jìn)行測試,分別有一千萬行、一億六千萬行、六億四千萬行。先用wc -l運(yùn)行兩次,然后用Python的wc.py。

運(yùn)行結(jié)果:

[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text.txt && time wc -l text.txt && time python3 wc.py text.txt"
10000000 text.txt

real    0m0.086s
user    0m0.072s
sys     0m0.013s
10000000 text.txt

real    0m0.080s
user    0m0.060s
sys     0m0.019s
10000000
64.38159942626953

real    0m0.150s
user    0m0.100s
sys     0m0.033s
[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text3.txt && time wc -l text3.txt && time python3 wc.py text3.txt"
160000000 text3.txt

real    0m1.322s
user    0m0.991s
sys     0m0.318s
160000000 text3.txt

real    0m1.313s
user    0m0.966s
sys     0m0.341s
160000000
838.7012481689453

real    0m0.908s
user    0m0.595s
sys     0m0.297s
[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text4.txt && time wc -l text4.txt && time python3 wc.py text4.txt"
640000000 text4.txt

real    0m5.805s
user    0m4.349s
sys     0m1.455s
640000000 text4.txt

real    0m5.787s
user    0m4.342s
sys     0m1.445s
640000000
3323.5926628112793

real    0m3.399s
user    0m2.255s
sys     0m1.108s

可以看到Python實(shí)際上是比wc -l更快的,主要因?yàn)榧?code>Python的步驟很少,大部分時間都在read(),count()這樣的C實(shí)現(xiàn)的過程中。wc更慢的原因猜想可能是默認(rèn)的緩沖區(qū)更小,所以需要更多的read()

到此這篇關(guān)于如何利用Python快速統(tǒng)計文本的行數(shù)的文章就介紹到這了,更多相關(guān)Python快速統(tǒng)計文本的行數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換你了解嗎

    Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python的進(jìn)制轉(zhuǎn)換和ASCLL轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 詳解python的xlwings庫讀寫excel操作總結(jié)

    詳解python的xlwings庫讀寫excel操作總結(jié)

    這篇文章主要介紹了詳解python的xlwings庫讀寫excel操作總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python實(shí)現(xiàn)Nao機(jī)器人的單目測距

    python實(shí)現(xiàn)Nao機(jī)器人的單目測距

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Nao機(jī)器人的單目測距,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python發(fā)送手機(jī)動態(tài)驗(yàn)證碼代碼實(shí)例

    Python發(fā)送手機(jī)動態(tài)驗(yàn)證碼代碼實(shí)例

    這篇文章主要介紹了Python發(fā)送手機(jī)動態(tài)驗(yàn)證碼代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • python操作SqlServer獲取特定表的所有列名(推薦)

    python操作SqlServer獲取特定表的所有列名(推薦)

    這篇文章主要介紹了python操作SqlServer獲取特定表的所有列名,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Django查找網(wǎng)站項(xiàng)目根目錄和對正則表達(dá)式的支持

    Django查找網(wǎng)站項(xiàng)目根目錄和對正則表達(dá)式的支持

    這篇文章主要介紹了Django查找網(wǎng)站項(xiàng)目根目錄和對正則表達(dá)式的支持,僅供參考,需要的朋友可以參考下
    2015-07-07
  • python接入GoogleAuth的實(shí)現(xiàn)

    python接入GoogleAuth的實(shí)現(xiàn)

    經(jīng)常會用到GoogleAuth作為二次驗(yàn)證碼,本文主要介紹了python接入GoogleAuth的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • python?Pydub簡單易用的音頻處理庫使用實(shí)例探索

    python?Pydub簡單易用的音頻處理庫使用實(shí)例探索

    Pydub是一個簡單易用的Python庫,它讓音頻處理變得像處理列表或字符串一樣簡單,你可以用Pydub來剪輯、合并、調(diào)整音頻文件,以及執(zhí)行許多其他的音頻處理任務(wù),它支持多種音頻格式,包括常見的MP3、WAV和AAC
    2024-01-01
  • Python爬蟲框架Scrapy簡介

    Python爬蟲框架Scrapy簡介

    這篇文章介紹了Python爬蟲框架Scrapy,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python文件路徑名的操作方法

    Python文件路徑名的操作方法

    對于文件路徑名的操作在編程中是必不可少的,比如說,有時候要列舉一個路徑下的文件,那么首先就要獲取一個路徑,再就是路徑名的一個拼接問題,通過字符串的拼接就可以得到一個路徑名。這篇文章主要介紹了Python中文件路徑名的操作,需要的朋友可以參考下
    2019-10-10

最新評論

六枝特区| 留坝县| 江都市| 鸡泽县| 洮南市| 安国市| 上栗县| 来凤县| 米易县| 鹤山市| 宜城市| 剑河县| 宜城市| 云浮市| 西宁市| 景德镇市| 宁德市| 南京市| 卓资县| 古浪县| 贵定县| 乌兰浩特市| 延长县| 梁河县| 遂昌县| 枣庄市| 交口县| 四子王旗| 新津县| 雷州市| 泽普县| 新建县| 乌审旗| 抚松县| 五峰| 营山县| 株洲县| 青岛市| 长春市| 乌拉特中旗| 岳阳县|