在python中的文件中写入多行

kar*_*t18 13 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")
Run Code Online (Sandbox Code Playgroud)

这里target是文件对象,line1,line2,line3是用户输入.我想只使用一个target.write()命令来编写这个脚本.我尝试过使用以下内容:

target.write("%s \n %s \n %s \n") % (line1, line2, line3)
Run Code Online (Sandbox Code Playgroud)

但是不是将字符串放在另一个字符串中但是如果我使用以下内容:

target.write(%s "\n" %s "\n" %s "\n") % (line1, line2, line3)
Run Code Online (Sandbox Code Playgroud)

Python解释器(我使用的是Microsoft Powershell)说的语法无效.我怎么能这样做?

aIK*_*Kid 30

你的大括号令人困惑.像这样做:

target.write("%s \n %s \n %s \n" % (line1, line2, line3))
Run Code Online (Sandbox Code Playgroud)

甚至更好,使用writelines:

target.writelines([line1, line2, line3])
Run Code Online (Sandbox Code Playgroud)

  • 请注意, writelines 不会添加行尾。 (3认同)
  • @kartikey_kant:`%`是对字符串的操作,而不是写调用.你有这种方式,你告诉Python在其中写一个带有'%s`的字符串,然后将`%`运算符应用于`write`调用的结果. (2认同)
  • 适用于我,但您需要删除占位符之间的空格,否则您的输出将在第二个和第三个新行上有前导空格.不知道关于writelines,谢谢你提到. (2认同)

Bur*_*lid 5

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))
Run Code Online (Sandbox Code Playgroud)


jck*_*opp 5

另一种方式,至少对我来说,似乎更直观:

target.write('''line 1
line 2
line 3''')
Run Code Online (Sandbox Code Playgroud)