我正在尝试计算文本文件中字符串的出现次数。文本文件看起来像这样,每个文件大约 200MB。
String1 30
String2 100
String3 23
String1 5
.....
我想将计数保存到字典中。
count = {}
for filename in os.listdir(path):
if(filename.endswith("idx")):
continue
print filename
f = open(os.path.join(path, filename))
for line in f:
(s, cnt) = line[:-1].split("\t")
if(s not in count):
try:
count[s] = 0
except MemoryError:
print(len(count))
exit()
count[s] += int(cnt)
f.close()
print(len(count))
我在 时遇到内存错误count[s] = 0
,但我的计算机中仍有更多可用内存。
我该如何解决这个问题?谢谢!
更新:我在这里复制了实际代码。我的python版本是2.4.3,机器运行linux,内存48G左右,但是只消耗不到5G。代码停在len(count)=44739243
.
UPDATE2:字符串可以重复(不是唯一的字符串),所以我想将字符串的所有计数相加。我想要的操作只是读取每个字符串的计数。每个文件大约有 10M 行,我有 30 多个文件。我预计这个数字不到 1000 亿。
UPDATE3:操作系统是 linux 2.6.18。