如何将新数据附加到新行

时间:2014-02-17 21:40:32

标签: python file-io append

我的代码如下所示:

def storescores():

   hs = open("hst.txt","a")
   hs.write(name)
   hs.close() 

所以,如果我运行它并输入“Ryan” 然后再次运行并输入“Bob” 文件hst.txt看起来像

RyanBob 

而不是

Ryan
Bob

我该如何解决这个问题?

9 个答案:

答案 0 :(得分:58)

如果你想要换行,你必须明确写一个。通常的方式是这样的:

hs.write(name + "\n")

这使用反斜杠转义符\n,Python将其转换为字符串文字中的换行符。它只是将您的字符串name和该换行符连接成一个更大的字符串,该字符串将被写入该文件。

也可以使用多行字符串文字,如下所示:

"""
"""

或者,您可能希望使用字符串格式而不是串联:

hs.write("{}\n".format(name))

所有这些都在本教程的Input and Output章节中进行了解释。

答案 1 :(得分:14)

所有答案似乎都很好。如果您需要多次,请注意写作

hs.write(name + "\n")

在内存中构造一个新字符串并将其附加到文件中。

效率更高

hs.write(name)
hs.write("\n")

不会创建新字符串,只是附加到文件。

答案 2 :(得分:5)

我有同样的问题。我能够通过使用格式化程序来解决它。

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()

我希望这会有所帮助。

答案 3 :(得分:4)

还有一个事实是你必须考虑。 在向文件添加任何内容之前,您应首先检查文件是否为空。因为如果你的文件是空的,那么我认为你不想在文件的开头添加一个空白的新行。这段代码

  1. 首先检查文件是否为空
  2. 如果文件为空,则只需将输入文本添加到文件中,否则将添加新行,然后将文本添加到文件中。 您应该使用os.path.getsize()的try catch来捕获任何异常。
  3. 代码

    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()
    

答案 4 :(得分:4)

在Python> = 3.6中,您可以使用新的string literal功能:

with open('hst.txt', 'a') as fd:
    fd.write(f'\n{name}')

请注意使用' with statment'当fd用完范围

时会自动关闭文件

答案 5 :(得分:3)

答案是写完字符串后不要添加换行符。那可能会解决另一个问题。您要问的是如何在开始附加字符串之前在 之前添加换行符。如果要添加换行符,但仅当不存在换行符时,则需要通过读取文件来首先查找。

例如

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)

您可能想在名称后添加换行符,也可以不添加,但是无论如何,这不是问题的答案。

答案 6 :(得分:2)

我认为你想要的只是简单的字符串连接:

def storescores():

   hs = open("hst.txt","a")
   hs.write(name + " ")
   hs.close() 

或者,将换行符的“”更改为“\ n”。

答案 7 :(得分:0)

import subprocess
subprocess.check_output('echo "' + YOURTEXT + '" >> hello.txt',shell=True)

答案 8 :(得分:0)

您需要更改参数“ a” =>“ a +”。 请遵循以下代码:

def storescores():
hs = open("hst.txt","a+")