Rya*_*796 53 python file-io append
我的代码看起来像这样:
def storescores():
hs = open("hst.txt","a")
hs.write(name)
hs.close()
Run Code Online (Sandbox Code Playgroud)
因此,如果我运行它并输入"Ryan"然后再次运行它并输入"Bob"文件hst.txt看起来像
RyanBob
Run Code Online (Sandbox Code Playgroud)
代替
Ryan
Bob
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
aba*_*ert 65
如果你想要换行,你必须明确写一个.通常的方式是这样的:
hs.write(name + "\n")
Run Code Online (Sandbox Code Playgroud)
这使用反斜杠转义\n符,Python将其转换为字符串文字中的换行符.它只是将您的字符串name和该换行符连接成一个更大的字符串,该字符串将写入该文件.
也可以使用多行字符串文字,如下所示:
"""
"""
Run Code Online (Sandbox Code Playgroud)
或者,您可能希望使用字符串格式而不是串联:
hs.write("{}\n".format(name))
Run Code Online (Sandbox Code Playgroud)
所有这些都在本教程的输入和输出章节中进行了解释.
ser*_*inc 15
所有答案似乎都很好.如果你需要多次这样做,请注意写作
hs.write(name + "\n")
Run Code Online (Sandbox Code Playgroud)
在内存中构造一个新字符串并将其附加到文件中.
效率会更高
hs.write(name)
hs.write("\n")
Run Code Online (Sandbox Code Playgroud)
它不会创建新字符串,只是附加到文件.
在Python> = 3.6中,您可以使用新的字符串文字功能:
with open('hst.txt', 'a') as fd:
fd.write(f'\n{name}')
Run Code Online (Sandbox Code Playgroud)
请注意,在fd超出范围时,使用' with statment '将自动关闭文件
您还必须考虑一个事实。在向其中添加任何内容之前,您应该首先检查文件是否为空。因为如果您的文件为空,那么我认为您不想在文件的开头添加空白的新行。这段代码
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()
Run Code Online (Sandbox Code Playgroud)
小智 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()
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
答案是不要在编写字符串后添加换行符。那可能会解决另一个问题。您要问的是如何在开始附加字符串之前添加换行符。如果要添加换行符,但仅当不存在换行符时,则需要通过读取文件来首先查找。
例如,
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)
Run Code Online (Sandbox Code Playgroud)
您可能要在名称后添加换行符,也可以不添加,但是无论如何,这不是问题的答案。
| 归档时间: |
|
| 查看次数: |
168577 次 |
| 最近记录: |