如何从文件中删除pickle对象?

时间:2018-04-26 10:29:39

标签: python file serialization pickle

我在做节目时遇到了问题。我的程序是创建一个班级学生,并且有一些变量,我的任务是将学生添加到一个可序列化的文件中,并在用户想要的时候删除学生。我已经编写了添加学生的代码但是在删除对象时我被卡住了。如果有人能帮助我如何从文件中删除腌制对象,我将非常感谢?

我的代码是:

import pickle
n = int(input("Enter number of students you want to enter:"))
for i in range(0,n):
  name = input("Enter student name: ")
  roll = input("Enter roll number: ")
  sex = input("Enter sex: ")
  sub = input("Enter subject: ")
  tot = input("Enter total: ")

  s = Student(name,roll,sex,sub,tot)

  infile = open("pb.txt","ab")
  pickle.dump(s,infile)
  infile.close()

我的学生班是:

class Student:
     def __init__(self,name,roll,sex,sub,tot):
         self.name = name
         self.roll = roll
         self.sex = sex
         self.sub = sub
         self.tot = tot

2 个答案:

答案 0 :(得分:1)

一种方法可能是挑选学生名单。然后,当您要删除时,您可以从文件中读取,正常删除,例如students.remove(),然后再次腌制。

答案 1 :(得分:0)

Pickle文件不可编辑,而且它们从来就不是。如果你需要跟踪单个被腌制的项目,请查看the shelve module - 这可以让你处理(腌制)对象的外部集合,比如带字符串键的字典。