テキストファイル内の文字列の出現回数をカウントしようとしています。テキストファイルは次のようになり、各ファイルは約200MBです。
String1 30
String2 100
String3 23
String1 5
.....
カウントをdictに保存したいと思います。
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:文字列は複製される可能性があるため(一意の文字列ではない)、文字列のすべてのカウントを合計したいと思います。私が欲しい操作は、各文字列のカウントを読み取ることです。各ファイルあたり約1,000万行あり、30を超えるファイルがあります。数は1000億未満だと思います。
UPDATE3:OSはLinux2.6.18です。