Я, конечно, понимаю, что указанное куратором тэга решение будет работать, но вообще говоря оно всё равно неправильное. Легко увидеть, что в таком варианте при повторном запуске скрипта файл не будет пересоздан - в него будут добавлены всё те же записи ещё раз.
Тут ошибка в том, что файл открывается заново в каждой итерации цикла, что само по себе неразумно, а также и перезатирается его содержимое. Поэтому-то и получается одна строка в итоге. Для исправления надо вынести открытие файла на уровень выше, чем for. В этом случае он будет открыт один раз и закрыт только после завершения цикла.