日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python文件关键行数_Python计算大文件行数方法及性能比较

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python文件关键行数_Python计算大文件行数方法及性能比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用Python快速高效地統計出大文件的總行數, 下面是一些實現方法和性能的比較。

1.readline讀所有行

使用readlines方法讀取所有行:

def readline_count(file_name):

return len(open(file_name).readlines())

2.依次讀取每行

依次讀取文件每行內容進行計數:

def simple_count(file_name):

lines = 0

for _ in open(file_name):

lines += 1

return lines

3.sum計數

使用sum函數計數:

def sum_count(file_name):

return sum(1 for _ in open(file_name))

4.enumerate枚舉計數:

def enumerate_count(file_name):

with open(file_name) as f:

for count, _ in enumerate(f, 1):

pass

return count

5.buff count

每次讀取固定大小,然后統計行數:

def buff_count(file_name):

with open(file_name, 'rb') as f:

count = 0

buf_size = 1024 * 1024

buf = f.read(buf_size)

while buf:

count += buf.count(b'\n')

buf = f.read(buf_size)

return count

6.wc count

調用使用wc命令計算行:

def wc_count(file_name):

import subprocess

out = subprocess.getoutput("wc -l %s" % file_name)

return int(out.split()[0])

7.partial count

在buff_count基礎上引入partial:

def partial_count(file_name):

from functools import partial

buffer = 1024 * 1024

with open(file_name) as f:

return sum(x.count('\n') for x in iter(partial(f.read, buffer), ''))

8.iter count

在buff_count基礎上引入itertools模塊 :

def iter_count(file_name):

from itertools import (takewhile, repeat)

buffer = 1024 * 1024

with open(file_name) as f:

buf_gen = takewhile(lambda x: x, (f.read(buffer) for _ in repeat(None)))

return sum(buf.count('\n') for buf in buf_gen)

下面是在我本機 4c8g python3.6的環境下,分別測試100m、500m、1g、10g大小文件運行的時間,單位秒:

方法

100M

500M

1G

10G

readline_count

0.25

1.82

3.27

45.04

simple_count

0.13

0.85

1.58

13.53

sum_count

0.15

0.77

1.59

14.07

enumerate_count

0.15

0.80

1.60

13.37

buff_count

0.13

0.62

1.18

10.21

wc_count

0.09

0.53

0.99

9.47

partial_count

0.12

0.55

1.11

8.92

iter_count

0.08

0.42

0.83

8.33

總結

以上是生活随笔為你收集整理的python文件关键行数_Python计算大文件行数方法及性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。