Writeline()在文件结尾添加空行[Python]
这是我删除文件最后一行的代码,但在将其重写到同一个文件后,存在一个额外的空行Writeline()在文件结尾添加空行[Python],python,python-3.x,file,file-manipulation,Python,Python 3.x,File,File Manipulation,这是我删除文件最后一行的代码,但在将其重写到同一个文件后,存在一个额外的空行 lines = open('file.csv', 'r').readlines() del lines[-1] open('file.csv', 'w').writelines(lines) 请注意,初始文件有两行: 请注意,文件的最后一个文本/行已被删除,但还有多余的空行: 我的目标是删除多余的那一行。提前谢谢你 原因是换行符不是来自带有'Orange'的行,而是来自带有'Blue'的行,实际上是'Blue\
lines = open('file.csv', 'r').readlines()
del lines[-1]
open('file.csv', 'w').writelines(lines)
请注意,初始文件有两行:
请注意,文件的最后一个文本/行已被删除,但还有多余的空行:
我的目标是删除多余的那一行。提前谢谢你 原因是换行符不是来自带有
'Orange'
的行,而是来自带有'Blue'
的行,实际上是'Blue\n'
因此,您应该这样做:
with open('file.csv', 'r+') as f:
lines = f.readlines()[:-1]
lines[-1] = lines[-1].strip()
f.seek(0)
f.writelines(lines)
f.truncate()
特别注意:
- 使用
打开文件以防止泄漏文件对象和
- 在读/写模式下调用
(这更多的是风格问题)open
文件.csv的内容
:
Blue
格式良好的文本文件的每一行都有一个尾随的换行符。从某种意义上说,这会产生一个“空字符串”,在某些程序中,它可以呈现为文件末尾没有内容的行。你的问题并不清楚这是否是你所关心的;如果是,我的建议是不要担心。不在最后一行末尾写换行符从技术上讲是微不足道的,但如果你想让文本文件与其他程序互操作,这通常不是一个好主意。@tripleee,如果我的程序需要在同一文件上再次重写,我担心的是我得到了橙色[1行]Empy行[2行],然后是新颜色[3行],这表明我最终得到了一些空行。我在使用strip()之前尝试过,除了添加f.seek和f.truncate之外,我将进一步检查它的作用,@bumbaw调用
open
时得到的文件对象将保持指向文件中当前位置的指针。读取后,指针位于末尾,因此您需要使用seek
返回开头以开始写入。当调用write
时,您将覆盖已有的数据,因此当您完成时,您需要调用truncate
以删除剩余的旧数据(如果有的话)。
with open('file.csv', 'r+') as f:
lines = f.readlines()[:-1]
lines[-1] = lines[-1].strip()
f.seek(0)
f.writelines(lines)
f.truncate()
Blue