Python 在pickle中删除数据
我有一个pickle数据库,里面有5个变量:Python 在pickle中删除数据,python,python-3.x,pickle,Python,Python 3.x,Pickle,我有一个pickle数据库,里面有5个变量:rafTur、rafKat、rafNo、rafIndex、rafIndexData。我正在尝试删除pickle文件中的数据。我的主要目标是从用户那里获取如下输入: rafTur=S rafKat=1 rafNo=2 rafIndex=3 然后从我的pickle文件中找到名为noSqlDB的输入。然后删除有关输入的所有数据 def delPic(): infile = open('noSqlDB', 'rb+') sistem = p
rafTur、rafKat、rafNo、rafIndex、rafIndexData
。我正在尝试删除pickle文件中的数据。我的主要目标是从用户那里获取如下输入:
- rafTur=S rafKat=1 rafNo=2 rafIndex=3
noSqlDB
的输入。然后删除有关输入的所有数据
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
中的数据
我试着换衣服
del sistem
到
def unpickle_数据库(文件名):
将open(filename,'rb')作为f:
尽管如此:
尝试:
成品酸洗负荷(f)
除EOFError外:
打破
def save_对象(对象,文件名,a):
如果a<1:
以open(文件名为“wb+”)作为输出:
pickle.dump(obj、输出、pickle.u协议)
其他:
以open(文件名为“ab+”)作为输出:
pickle.dump(obj、输出、pickle.u协议)
def delPic():
温度=0
students=list(取消pickle_数据库('noSqlDB'))
对于学生中的学生:
印刷品(学生)
保存对象(学生,'noSqlDB',临时)
温度+=1
尝试了一些代码后找到了解决方案。你再也不会写入pickle文件了,为什么你希望它会更改?@juanpa.arrivillaga所以删除还不够,我应该写入文件好的,我试试。你说的“删除”是什么意思
del sistem
删除变量,但即使它确实删除了不会影响pickle的对象。。。为什么会这样?注意,del-sistem
没有任何用处,因为我所说的删除就是覆盖sistem=pickle.load(infle)
。我不知道怎么做
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