首页 > 解决方案 > 在非常大的文件中计算行大小固定的行

问题描述

我有一个非常大的 CSV 文件(6.2 GB)。我想使用python计算它有多少行。我目前拥有的是以下内容:

import time

file_name = 'TickStory/EURUSD.csv'    
start = time.time()

with open(file_name) as f:
    line_count = sum(1 for line in f)

print(line_count)

end = time.time()
print(end - start)

文件中的每一列都有固定数量的字符。文件内容如下:

Timestamp,Bid price
2012-01-01 22:00:36.416,1.29368
2012-01-01 22:00:40.548,1.29366
2012-01-01 22:01:48.884,1.29365
2012-01-01 22:01:53.775,1.29365
2012-01-01 22:01:54.594,1.29366
2012-01-01 22:01:55.390,1.29367
2012-01-01 22:02:40.765,1.29368
2012-01-01 22:02:41.027,1.29368
...
...

我当前的代码大约需要 49.99 秒。有没有办法让它更快?

提前致谢。

注意:有很多可用的解决方案可以使用 python 廉价地查找行数。但是,我的情况与其他情况不同,因为在我的文件中,所有行都有固定数量的字符(标题行除外)。有什么办法可以利用它对我有利吗?

标签: pythonfile

解决方案


由于每一行都有固定数量的字符,只需用 获取文件的大小(以字节为单位os.path.getsize),减去标题的长度,然后除以每行的长度。像这样的东西:

import os

file_name = 'TickStory/EURUSD.csv'

len_head = len('Timestamp,Bid price\n')
len_row = len('2012-01-01 22:00:36.416,1.29368\n')

size = os.path.getsize(file_name)

print((size - len_head) / len_row + 1)

这假定文件中的所有字符都是 1 个字节。


推荐阅读