Написать несколько строк в файле в python

У меня есть следующий код:

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")
print "I'm going to write these to the file."
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

Здесь target - это объект файла, а строка1, строка2, строка 3 - пользовательские входы. Я хочу использовать только одну команду target.write() для записи этого script. Я попытался использовать следующее:

target.write("%s \n %s \n %s \n") % (line1, line2, line3)

Но не помещает ли строка внутри другой строки, но если я использую следующее:

target.write(%s "\n" %s "\n" %s "\n") % (line1, line2, line3)

Интерпретатор Python (я использую Microsoft Powershell) говорит о недопустимом синтаксисе. Как я могу это сделать?

Ответ 1

Вы путаете брекеты. Сделайте это так:

target.write("%s \n %s \n %s \n" % (line1, line2, line3))

Или даже лучше, используйте writelines:

target.writelines([line1, line2, line3])

Ответ 2

with open('target.txt','w') as out:
    line1 = raw_input("line 1: ")
    line2 = raw_input("line 2: ")
    line3 = raw_input("line 3: ")
    print("I'm going to write these to the file.")
    out.write('{}\n{}\n{}\n'.format(line1,line2,line3))

Ответ 3

Предполагая, что вы не хотите, чтобы пространство в каждой новой строке использовалось:

print("I'm going to write these to the file")
target.write("%s\n%s\n%s\n" % (line1, line2, line3))

Это работает для версии 3.6

Ответ 4

Я замечаю, что это учебное упражнение из книги "Learn Python The Hard Way". Хотя вы задали этот вопрос 3 года назад, я публикую это для новых пользователей, чтобы сказать, что не запрашивайте непосредственно в stackoverflow. По крайней мере, прочитайте документацию, прежде чем спрашивать.

И что касается вопроса, использование writelines является самым простым способом.

Используйте его следующим образом:

target.writelines([line1, line2, line3])

И как сказал алкид, вы перепутали скобки, просто следуйте его словам.

Ответ 5

Это также можно сделать так:

target.write(line1 + "\n" + line2 + "\n" + line3 + "\n")

Ответ 6

это также работает:

target.write("{}" "\n" "{}" "\n" "{}" "\n".format(line1, line2, line3))