我有一些非常大的文本文件(>2g),我想逐字处理它们。这些文件是以空格分隔的文本文件,没有换行符(所有单词都在一行中)。我想取出每个单词,测试它是否是字典单词(使用enchant),如果是,就将其写入新文件。
这是我现在的代码:
with open('big_file_of_words', 'r') as in_file:
with open('output_file', 'w') as out_file:
words = in_file.read().split(' ')
for word in word:
if d.check(word) == True:
out_file.write("%s " % word)
我看过Python中读取大文件的懒惰方法,它建议使用yield
分块读取,但我担心使用预定大小的块会将单词分割在中间。基本上,我希望块尽可能接近指定的大小,同时只在空格处分割。有什么建议吗?
buf
末尾有一个空格并且在接下来的读取中buf
末尾有一个拆分单词,则会出现错误。如果测试文件testfile.txt为:This is a file with some text in it and no newlines. Some text has punctuation. Test this file out with multiple buffer sizes.
并且读取大小为20:inp.read(20)
则您将看到withsome
,andno
和punctuation.Test
被连接起来。 - MRSharff