我有一个217gb的Csv文件,如何在没有超时的情况下使用python或php脚本获取唯一列值的计数?
答案 0 :(得分:1)
不确定超时是什么意思,对于像这样的大文件,它总是需要很长时间。
tokens = {}
with open("your.csv") as infile:
for line in infile:
columns = line.split(',')
# Where idx is your desired column index
if columns[idx] not in tokens:
tokens[columns[idx]] = 0
else:
tokens[columns[idx]] += 1
print tokens
这会逐行加载文件,因此您的计算机不会因将整个217 Gb加载到ram而崩溃。您可以先尝试一下,看看字典是否适合您计算机的内存。否则,您可能会考虑以分而治之的方式将文件拆分为较小的块。
答案 1 :(得分:-1)
您可以尝试增加field_size_limit
import csv
csv.field_size_limit(1000000000)
r = csv.reader(open('doc.csv', 'rb'))
for row in r:
print(row) # do the processing