删除 pickle 中的数据

Deleting data in pickle

我有一个 pickle 数据库,里面有 5 个变量:rafTur, rafKat, rafNo, rafIndex, rafIndexData。我正在尝试删除泡菜文件中的数据。我的主要目标是从用户那里获取输入,例如 this :

然后从名为 noSqlDB 的 pickle 文件中找到输入。然后删除有关输入的全部数据。

def delPic():
    infile = open('noSqlDB', 'rb+')
    sistem = pickle.load(infile)
    flag = False

    rafTur = str(input('Rafın türünü giriniz : '))
    rafKat = int(input('Rafın katını giriniz : '))
    rafNo = int(input('Rafın Nosunu giriniz : '))
    rafIndex = int(input('Rafın indexini giriniz : '))

    # read to the end of file.
    for x in range((len(sistem) + 1)):
        try:

            if (sistem['rafTur'].upper() == rafTur.upper() and sistem['rafKat'] == rafKat and sistem['rafNo'] == rafNo and sistem['rafIndex'] == rafIndex):

                del sistem
                flag = True

            sistem = pickle.load(infile)
        except EOFError:
            break

    if flag == False:
        print('Record not Found')

    infile.close()

当我 运行 这段代码没有任何变化。数据保留在 noSqlDB。如何删除 noSqlDB 中的数据? like this

我试过改变

del sistem

del sistem['rafTur'],sistem['rafKat'], sistem['rafNo'],sistem['rafIndex'],sistem['rafIndexData']
def unpickle_database(filename):
    with open(filename, 'rb') as f:
        while True:
            try:
                yield pickle.load(f)
            except EOFError:
                break

def save_object(obj, filename,a):

    if a < 1:
        with open(filename, 'wb+') as output:
            pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
    else :
        with open(filename, 'ab+') as output:
            pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)


def delPic():

    temp =0
    students = list(unpickle_database('noSqlDB'))

    for student in students:
        print(student)
        save_object(student, 'noSqlDB',temp)
        temp += 1

在此处尝试一些代码后找到了解决方案。