Я написал программу для чтения списка слов из текстового файла (по одному слову в строке) и объединения их для получения каждой перестановки из 3 слов перед записью выходного файла перестановок, опять же по одному в строке.
import itertools
wordList = open("wordlist.txt", "r").readlines() # import words into list
wordListOut = open("output.txt", "w")
wordList = [item.rstrip() for item in wordList] # strip \n from list items
for item in [x for x in itertools.permutations(wordList, 3)]:
wordListOut.write("".join("%s %s %s\n" % item))
wordListOut.close()
Кажется, он выполняет свою работу, но меня беспокоит то, что, когда весь текст хранится в ОЗУ в виде списка и itertools.permutations()
создается список кортежей в ОЗУ, без очень большого wordlist.txt
он быстро исчерпает память.
Было бы лучше, если бы каждая перестановка записывалась прямо в выходной файл, а не хранилась в ОЗУ, и в зависимости от размера wordlist.txt
было бы лучше не загружать все это в ОЗУ.
Также как я могу избежать добавления \n
в последнюю строку выходного файла?