python-如何将新数据附加到新的林
我的代码如下所示:
def storescores():
hs = open("hst.txt","a")
hs.write(name)
hs.close()
所以如果我运行它并输入“ Ryan”然后再次运行它,然后输入“ Bob”文件hst.txt看起来像
RyanBob
代替
Ryan
Bob
我该如何解决?
9个解决方案
63 votes
如果要换行,则必须显式地写一个。 通常的方式是这样的:
hs.write(name + "\n")
它使用反斜杠转义符\n,Python将其转换为字符串文字中的换行符。 它只是将您的字符串name和该换行符连接成一个更大的字符串,然后将其写入文件。
也可以改用多行字符串文字,如下所示:
"""
"""
或者,您可能要使用字符串格式而不是串联:
hs.write("{}\n".format(name))
所有这些都在本教程的“输入和输出”一章中进行了说明。
abarnert answered 2020-01-15T14:25:48Z
14 votes
所有答案似乎都很好。 如果您需要多次这样做,请注意
hs.write(name + "\n")
在内存中构造一个新字符串,并将其附加到文件中。
更有效率
hs.write(name)
hs.write("\n")
它不会创建新字符串,而只是追加到文件中。
serv-inc answered 2020-01-15T14:26:22Z
6 votes
在Python> = 3.6中,您可以使用新的字符串文字功能:
with open('hst.txt', 'a') as fd:
fd.write(f'\n{name}')
请注意,使用“ with statement”会在fd超出范围时自动关闭文件
Vlad Bezden answered 2020-01-15T14:26:46Z
5 votes
我遇到过同样的问题。 而且我能够通过使用格式化程序解决它。
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()
我希望这有帮助。
S3445 answered 2020-01-15T14:27:12Z
4 votes
您还必须考虑一个事实。在向其中添加任何内容之前,您应该首先检查文件是否为空。 因为如果您的文件为空,那么我认为您不想在文件的开头添加空白的新行。 此代码
首先检查文件是否为空
如果文件为空,则只需将输入文本添加到文件中,否则将添加新行,然后将文本添加到文件中。 您应该使用os.path.getsize()的try catch来捕获任何异常。
码:
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()
ρss answered 2020-01-15T14:27:46Z
4 votes
答案是不要在编写字符串后添加换行符。 那可能会解决另一个问题。 您要问的是如何在开始附加字符串之前添加换行符。 如果要添加换行符,但仅当不存在换行符时,则需要通过读取文件来首先查找。
例如,
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)
您可能要在名称后添加换行符,也可以不添加,但是无论如何,这不是问题的答案。
Wyrmwood answered 2020-01-15T14:28:16Z
2 votes
我假设您只需要简单的字符串连接:
def storescores():
hs = open("hst.txt","a")
hs.write(name + " ")
hs.close()
或者,将“”更改为“ \ n”换行。
Daniel Casserly answered 2020-01-15T14:28:40Z
0 votes
import subprocess
subprocess.check_output('echo "' + YOURTEXT + '" >> hello.txt',shell=True)
markroxor answered 2020-01-15T14:28:57Z
-2 votes
您需要更改参数“ a” =>“ a +”。请遵循以下代码:
def storescores():
hs = open("hst.txt","a+")
Sang9xpro answered 2020-01-15T14:29:17Z