Запись в файл всех комбинаций

Есть код для вывода комбинации пин-кода

from itertools import product
for combos in product('0123456789', repeat=4):
    S = ''.join(combos)
    if S.find('BC') == -1 and  S.find('CC') == -1:
        filee = open("pins.txt", "w")
        filee.write(S)
        filee.close()

В txt файле только одна комбинация "9999"

Как вывести все комбинации?


Ответы (2 шт):

Автор решения: Pavel Durmanov
In [1]: from itertools import product

In [2]: combinations = []

In [3]: for combos in product("0123456789", repeat=4):
   ...:     combinations.append("".join(combos))
   ...:

In [4]: with open("data.txt", "w") as fp:
   ...:     fp.write("\n".join(combinations))
→ Ссылка
Автор решения: Стас

Когда вы открываете файл так: open("file.txt", "w") вы уничтожаете старый файл, создаёте новый пустой и пишете в него.

Из за постоянного переоткрытия файла в цикле вы постоянно перезаписываете старый. Вот у вас и есть результат только от последней итерации.

Лучше открывайте файл перед циклом - это уменьшит кол-во обращений к диску и увеличит скорость работы программы.

Но если вы все же хотите постоянно переоткрывать файл - используйте: open ("file.txt", "a"). Это будет дописывать в конец файла новые данные.

→ Ссылка