def deleteEmployee(self,code,name):
with open("employee.data","r+") as file:
# data=file.readlines()
for num, i in enumerate(file,1):
print(i)
a=i[:len(i)-1]
if str(a)==str(code):
print("found at",num)
file.seek(num)
file.write("\n")
file.close()
Я просто хочу написать код обработки файлов. Здесь я определяю функцию удаления, в которой я хочу удалить определенный код, если он существует внутри файла, но не работает.
но невозможно создавать новый файл снова и снова всякий раз, когда пользователь удаляет данные из файла
Почему это невозможно? Кроме того, я предлагаю не совсем это, я предлагаю вам заменить весь контент, а не создавать новый файл.
Но, вероятно, вам действительно нужен база данных, если вы думаете, что собираетесь много менять данные.
Хорошо, дайте мне подсказку или код, если у вас есть код, связанный с файлом, который заменяет данные в новом файле.






Этот код должен достичь того, чего вы хотите:
def deleteEmployee(self,code,name):
with open("employee.data","r+") as file:
new_content = ""
for num, line in enumerate(file,1):
print(line)
a=line[:-1]
if str(a)==str(code):
print("found at ",num)
new_content += "\n" #Adds newline instead of 'bad' lines
else:
new_content += line #Adds line for 'good' lines
file.seek(0) #Returns to start of file
file.write(new_content) #Writes cleaned content
file.truncate() #Deletes 'old' content from rest of file
file.close()
Строки на самом деле не существовать в файлах, которые представляют собой просто последовательность символов, некоторые из которых представляют начало новой «строки». Поэтому удалить линию на месте очень сложно; вам лучше читать по строкам, отфильтровывая те, которые вам не нужны, а затем записывать весь результат обратно в старый файл.