Python - разделить строку на слова и записать их в файл

Мне нужно создать программу, которая получит какую то строку, например "слово1 слово2 слово3 слово4", затем их распределит вот так:

слово1
слово2
слово3
слово4

и после этого так же запишет их в текстовый файл.

Я уже пытался что то написать, и почти получилось. Когда я ввожу слова, они распределяются правильно, но записываются только в одну строку, что я делаю не так?

for word in input().split():
print(word)
file = open("words.txt", "a")
file.write(word)
file.close()

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

Автор решения: MarianD

У вас вероятно проблемы с отступами. Дальше, не хорошо постоянно открывать и закрывать файл в цикле:

with open("words.txt", "a") as file:
    for word in input().split():
        print(word)
        file.write(word + "\n")

Конструкция with позволяет вам (кроме других преимуществ) забыть о закрытии файла т.к. он закроется автоматически после выхода из этой конструкции.

Дальше, как вы можете видеть из моего кода, вам нужно вручную добавить знак перехода на новую строку "\n" потому что метод .write() не делает это автоматически.

→ Ссылка
Автор решения: nomnoms12

Вы не записываете символ перевода строки \n.

Когда Вы печатаете слова с помощью функции print, символ перевода строки добавляется автоматически в самый конец, потому что он является стандартным значением параметра end.

Но запись в файл не добавляет этот символ автоматически, поэтому Вам необходимо добавить его вручную:

file.write(word + '\n')
→ Ссылка
Автор решения: insolor

Можно выводить текст в файл с помощью print, результат будет точно такой же как при выводе на экран (переносы строк будут добавлены автоматически):

print(word, file=file)
→ Ссылка
Автор решения: Владимир Всея Руси

Можно еще добавить цикл while

a = True
while a:
    f = 'test-1'
    with open(f, 'a') as file:
        for a in input().split():
            file.write(a + '\n')
→ Ссылка