我正在尝试将一些变量保存到一个文件中的单独行中。
我的代码如下所示:
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
我做错了什么?
写入
期望每个字符串都以换行符终止。所以你需要:
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