У меня есть текстовый файл, который выглядит так:
myFiles.txt
Dell 2015 A14523 Sam
Sony 2014 A74256 John
Acer 2018 A45656 Mark
Sony 2007 S12345 James
Я хочу удалить данные, когда в качестве входных данных я указываю индекс, поэтому я конвертирую текстовый файл в словарь. Таким образом, я получил индексы для моего текстового файла. Но когда я удаляю какие-либо данные из словаря и записываю оставшиеся данные в текстовый файл, возникает ключевая ошибка.
Потому что когда я удаляю данные из словаря, индексы остаются прежними
Например:
Я создал 4 строки для разных ключей, то есть 1,2,3 и 4
Когда я удаляю данные из индекса 2, то словарные индексы остаются неизменными, я оставляю 1,3 и 4, и когда я переписываю данные в текстовый файл, это приводит к ключевой ошибке.
Как я могу удалить данные из текстового файла.
Я новичок в Python. Помогите мне решить
def deleteFunction(self):
ownerListDic = {}
num = 1
with open("myFiles.txt", "r") as oy:
for line in oy:
li = line.strip().split()
ownerListDic[num] = {"name": li[0], "purchase": li[
1], "bluePlate": li[2], "owner": li[3]}
num += 1
# enter the record id to delete from the text file
indexId = int(input("Enter record ID: "))
if indexId in ownerListDic:
# prompting to confirm the user you are going to delete
# this data
print(("You arev about to delete " + ''.join(ownerListDic[indexId]['name'] +
" " + ownerListDic[indexId]['purchase'] + " " + ownerListDic[indexId]["bluePlate"] + " " + ownerListDic[indexId]['owner'])) + " .")
# ask user to delete the data
delete = input(
"Do you wish to delete this record (Y/N): ").upper()
# if yes then data will delete
if delete == "Y":
ownerListDic.pop(indexId, None)
num=1
with open("myFiles.txt", 'w') as log:
for dataValue in ownerListDic.values():
log.write(ownerListDic[num]['name'] +
"\t" + ownerListDic[num]['purchase'] + "\t" + ownerListDic[num]["bluePlate"] + "\t" + ownerListDic[num]['owner'] + "\n")
num += 1
# after deletion this message will print
print("Record deleted.")