txt ファイルに保存されているクライアントのリストを管理する必要があるプロジェクトに取り組んでいます。私の問題は次のとおりです。リストを使用してメモリにlist=[]
変数にアップロードし、それを使用すると、実際にはオブジェクトのリストになります。リストから特定の行を削除しようとすると、問題が発生します。私はそれを削除しlist=[]
、その後新しいリストでtxtファイルを書き直しましたが、問題は空白行が残っており、プログラムを再度実行しようとするとリストが読み取れないことです。また、空白行を削除する関数を作成しましたが、機能していないようです。
空行を削除する機能です。
def elimina_client(self):
f = open("clienti.txt","r")
lines=f.readlines()
f.close
f = open("clienti.txt","w")
for line in lines:
if line!="":
f.write(line)
ファイルを書き換える機能です
def rescrie_clienti(self):
"""This function rewrites the clienti document"""
with open(self.fisier2,'w') as f:
for i in range(0,len(lista.lista_clienti)):
if i==len(lista.lista_clienti)-1 :
s =str(lista.lista_clienti[i].get_identitate())+","+str(lista.lista_clienti[i].get_nume())+","+str(lista.lista_clienti[i].get_cnp()+","+str(lista.lista_clienti[i].get_filme_inchiriate())+","+str(lista.lista_clienti[i].get_inchirieri()))
f.write("\n")
f.writelines(s)
else:
s =str(lista.lista_clienti[i].get_identitate())+","+str(lista.lista_clienti[i].get_nume())+","+str(lista.lista_clienti[i].get_cnp()+","+str(lista.lista_clienti[i].get_filme_inchiriate())+","+str(lista.lista_clienti[i].get_inchirieri()))
f.writelines(s)
そして、これはメモリ内のリストからアイテムを削除する実際の関数です
def sterge_client(self,ident):
"Deletes a client from the list"
k=0
for element in self.lista_clienti:
if element.get_identitate()==ident:
self.lista_clienti.remove(element)
k=1
if k==0:
raise RepositoryException(["Nu exista acest ID!"])
これは、ファイルから a 行を削除することを想定している関数です。実際に行うことはlist=[]
、指定された要素なしで新しいリストを書き直し、空白を「削除」することですが、機能していないようです。誰もが知っていますなぜ ?
def sterge_client2(self,ident):
lista.sterge_client(ident)
self.rescrie_clienti()
self.elimina_client()