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

溫馨提示×

溫馨提示×

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

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

怎么利用Python快速統計文本的行數

發布時間:2021-12-13 13:31:38 來源:億速云 閱讀:339 作者:柒染 欄目:開發技術

本篇文章為大家展示了怎么利用Python快速統計文本的行數,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

通常我們會用wc -l來統計文件行數,不過用Python統計也很簡單。

要快速統計一個文本文件中的行數,其實就是要統計這個文本文件中換行符的個數。為了盡量提高速度,我們需要盡量多讀一些文本然后一起處理。統計換行符的個數可以用bytes內置的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略有區別,如果要跟wc -l一致的話,可以將帶注釋的行刪掉。

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

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

運行結果:

[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實際上是比wc -l更快的,主要因為純Python的步驟很少,大部分時間都在read(),count()這樣的C實現的過程中。wc更慢的原因猜想可能是默認的緩沖區更小,所以需要更多的read()

上述內容就是怎么利用Python快速統計文本的行數,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

射阳县| 手机| 承德市| 合山市| 孟州市| 苍南县| 博野县| 柳州市| 广西| 云梦县| 民勤县| 京山县| 星座| 法库县| 徐闻县| 临沧市| 沁源县| 石阡县| 巴楚县| 正蓝旗| 长岛县| 寻乌县| 新沂市| 博爱县| 武义县| 辽阳县| 彭阳县| 绥阳县| 商水县| 英吉沙县| 沾益县| 修武县| 翼城县| 马关县| 满洲里市| 榆社县| 南乐县| 南木林县| 涡阳县| 佛坪县| 旅游|