我正在创建一个文件,用于编写、搜索、删除和打印其内容。当我删除一些行时,我必须再次显示更新的文件(没有删除的行(,但每当我这样做时,程序都会在文件末尾创建一个额外的空行。我该怎么修?
这是我写的代码(有些部分是西班牙语,因为那是我的原始语言(:
def borrar():
with open("agenda.txt","r") as f:
datos=f.readlines()
print("Digite la cedula del beneficiario a borrar:")
doc=input()
for i in datos:
if i==(doc+'n'):
indice=datos.index(i)
documento=indice
nombre=indice-1
telefono=indice+1
del datos[nombre:telefono+1]
return(datos)
def actualizar(lis=[]):
with open("agenda.txt","w") as f:
for i in lis:
f.write(i)
print("El usuario ha sido eliminado del listado")
li=borrar()
actualizar(li)
如果能得到任何帮助,我将不胜感激!!!
f.write()
实际上并没有在输入文本的末尾放置换行符。问题出现在borrar()
中,它在列表中的每个项目中都添加了一行换行符。如果您希望actualizar(lis=[])
删除列表最后一项上的换行符,您可以将其更改为
def actualizar(lis=[]):
with open("agenda.txt","w") as f:
for i in range(len(lis)-1):
f.write(lis[i])
f.write(lis[len(lis)-1].strip())
print("El usuario ha sido eliminado del listado")
这些代码所做的只是像往常一样编写其余的行,但从列表中最后一项的末尾删除换行符。
在源文件中,除最后一行外,所有行都是textn
,最后一行是text
。如果最后一行被删除,则前一个textn
在其自身之后形成空行。在将行输出到文件之前,您可以预先从列表的最后一个元素中删除n
:
def actualizar(lis):
lis[-1] = lis[-1].strip('n') # add just this line
with open("agenda.txt", "w") as f:
for i in lis:
f.write(i)
print("El usuario ha sido eliminado del listado")