我有一個包含超過24,000,000行的大文件.txt
。現在我想要做一個字數統計,即計算每個單詞及其相應的出現次數並將它們記錄到一個新文件中。下面是我試圖運行代碼:使用python讀寫大文件
import gensim
class Corpus(gensim.corpora.TextCorpus):
def count_tokens(self):
word_count = 0
for text in self.get_texts():
word_count += len(text)
return word_count
def get_texts(self):
for filename in self.input:
yield open(filename).read().split()
def main():
corpus = Corpus(['somefile.txt'])
word_count = corpus.count_tokens()
text = open('somefile.txt').read().split()
with open('path_to_output', 'w') as f:
for word, _ in corpus.dictionary.token2id.items():
num_occur = text.count(word)
f.write('%s %d\n' % (word, num_occur))
if __name__ == '__main__':
main()
而且服務器掛起...我不知道是否有其他足夠的方式這樣做,或者我可以做什麼改進?你如何用python讀寫真正大的文件?
使用類似系統的標記器 - 解析char char,並檢查匹配項。當模棱兩可時,繼續查看下一個字符以決定是否有延續 – Uriel
'open(filename).read()。split()'完全讀取文件,然後創建一個標記化版本:同時爲內存的兩倍。如果你只需要計數,Uriel方法可能是正確的。 –