我的代码如下所示:
def storescores():
hs = open("hst.txt","a")
hs.write(name)
hs.close()
所以如果我运行它并输入“Ryan” 然后再次运行并输入“Bob” 文件 hst.txt 看起来像
RyanBob
而不是
Ryan
Bob
我该如何解决这个问题?
如果你想要换行符,你必须明确地写一个。通常的做法是这样的:
hs.write(name + "\n")
这使用了反斜杠转义符
\n
,Python 将其转换为字符串文本中的换行符。它只是将您的字符串 name
和换行符连接成一个更大的字符串,然后将其写入文件。
也可以使用多行字符串文字来代替,如下所示:
"""
"""
或者,您可能想使用字符串格式而不是连接:
hs.write("{}\n".format(name))
所有这些都在教程的输入和输出章节中进行了解释。
在 Python >= 3.6 中,您可以使用新的 字符串文字 功能:
with open('hst.txt', 'a') as fd:
fd.write(f'\n{name}')
请注意,当“fd”超出范围时,使用“with statment”将自动关闭文件
所有答案似乎都很好。如果您需要多次执行此操作,请注意书写
hs.write(name + "\n")
在内存中构造一个新字符串并将其附加到文件中。
效率会更高
hs.write(name)
hs.write("\n")
它不会创建新字符串,只是附加到文件中。
答案是在写入字符串后不要添加换行符。这可能会解决不同的问题。您要问的是如何在开始附加字符串之前添加换行符。如果您想添加换行符,但前提是换行符尚不存在,则需要首先通过读取文件来查找。 例如,
with open('hst.txt') as fobj:
text = fobj.read()
name = 'Bob'
with open('hst.txt', 'a') as fobj:
if not text.endswith('\n'):
fobj.write('\n')
fobj.write(name)
您可能想在名称后添加换行符,也可能不想,但无论如何,这都不是您问题的答案。
file_name = "abc.txt"
new_string = "I am a new string."
opened_file = open(file_name, 'a')
opened_file.write("%r\n" %new_string)
opened_file.close()
我希望这有帮助。
首先检查文件是否为空
os.path.getsize()
来捕获任何异常。
:
import os
def storescores():
hs = open("hst.txt","a")
if(os.path.getsize("hst.txt") > 0):
hs.write("\n"+name)
else:
hs.write(name)
hs.close()
def storescores():
hs = open("hst.txt","a")
hs.write(name + " ")
hs.close()
或者,将“ ”更改为“ "换行符。
def storescores():
hs = open("hst.txt","a+")