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

2024-09-27 17:54:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的代码如下所示:

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

我做错什么了


Tags: 文件代码writelinesdefopenjohnfilesteve
2条回答

writelines期望每个字符串以换行符结尾。所以你需要:

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

the python docs

writelines(lines)

Write a list of lines to the stream. Line separators are not added, so it is usual for each of the lines provided to have a line separator at the end.

但通常来说,做file.write('\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

相关问题 更多 >

    热门问题