我正在尝试在txt文件的末尾添加一行。我一直在这里阅读一些帖子并尝试不同的选项,但是,出于某种原因,新行在最后一行之后添加,它只是附加在最后一行旁边。
所以我想知道我做错了什么......我在这里展示我的测试:
测试1:
#newProt is a new data entered by the user in this case 12345
exists = False
f = open('protocols.txt', 'a+')
for line in f:
if newProt == line:
exists = True
if not exists:
f.write(newProt)
f.close()
此代码后的txt文件:
2sde45
21145
we34z12345
测试2:
exists = False
with open('protocols.txt', 'r+') as f:
for line in f:
if newProt == line:
exists = True
if not exists:
f.write(newProt)
此代码后的txt文件:与上面完全相同...
并且,像这样,我测试了一些字母组合来打开文件,rb +,w等等但由于某种原因我从来没有得到所需的输出txt文件:
2sde45
21145
we34z
12345
所以我不知道我做错了什么,我在这里听了一些其他帖子的例子。
答案 0 :(得分:3)
试试这个:
exists = False
f = open('protocols.txt', 'a+')
for line in f:
if newProt == line:
exists = True
if not exists:
f.write('\n' + newProt)
f.close()
这会将新行字符添加到文件末尾,然后添加' newProt'。
编辑:
您的代码没有产生所需结果的原因是因为您只是将字符串写入文件。文本中的新行不是真正的' in'文本文件。文本文件实际上是一系列称为字符的字节。各种应用程序(如文本编辑器)为您显示新行的原因是因为它将某些字符解释为格式化元素而不是字母或数字。
' \ n'是一个这样的格式化字符(在ASCII标准中),它告诉你喜欢的文本编辑器开始一个新的行。还有其他诸如' \ t'这是一个标签。
答案 1 :(得分:0)
您可以使用f.seek(-x,x),到达最后一行,然后使用f.write()。
否则我的理解是你在" a"中打开文件。 (追加)模式,反正最后写的
请参阅此链接:Appending line to a existing file having extra new line in Python