提问者:小点点

文件中的多行仅显示为一行[重复]


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

我的代码如下所示:

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个答案

匿名用户

写入期望每个字符串都以换行符终止。所以你需要:

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

从python文档中:

写入(行)

将行列表写入流。未添加行分隔符,因此通常提供的每条行的末尾都有行分隔符。

但通常情况下,使用文件更为惯用。写入('\n'.join([sname,senemyname,scheckpoint))。请注意,这不会添加文件换行符。

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

with open('savefile.sav', 'w') as f:
    f.write('\n'.join([sname, senemyname, scheckpoint]))

匿名用户

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