文件中的多行仅显示为一行

时间:2019-02-27 17:31:36

标签: python python-3.x

我正在尝试将一些变量保存到单独行中的文件中。

我的代码如下:

def saveall(sname, senemyname, scheckpoint,):
    file = open("savefile.sav", "w")
    file.writelines([sname, senemyname, scheckpoint])
    file.close()

如果我在代码中放入saveall("John","Steve","Crossroads"),我希望它生成一个名为savefile.sav的文件,其中包含:

John

Steve

Crossroads

但是,当我运行程序时,savefile.sav包含:

JohnSteveCrossroads

我在做什么错了?

2 个答案:

答案 0 :(得分:3)

name希望每个字符串都以换行符结尾。所以你需要:

writelines

来自the python docs

  

file.writelines([sname + '\n', senemyname + '\n', scheckpoint + '\n'])

     

将行列表写入流中。没有添加行分隔符,因此通常为每个提供的行的末尾都有一个行分隔符。

但是通常writelines更惯用。请注意,这不会添加文件换行符。

您还应该对文件使用上下文,因为如果引发异常,则可能无法关闭文件:

file.write('\n'.join([sname, senemyname, scheckpoint))

答案 1 :(得分:1)

writelines不在行之间添加分隔符,因此您必须自己添加分隔符:

def saveall(sname, senemyname, scheckpoint,):
    file = open("savefile.sav", "w")
    file.writelines((line + '\n' for line in [sname, senemyname, scheckpoint]))
    file.close()

saveall("John","Steve","Crossroads")

文件内容:

John 
Steve 
Crossroads