Как удалить маринованный объект из файла? - PullRequest
0 голосов
/ 26 апреля 2018

У меня проблема, когда я делал программу. Моя программа состоит в том, чтобы создать ученика, и в нем есть некоторые переменные, и моя задача состоит в том, чтобы добавить учеников в сериализуемый файл и удалять учеников, когда пользователь захочет. Я написал код для добавления студентов, но застрял при удалении объекта. Я очень благодарен, если кто-нибудь может мне помочь, как удалить засоленный объект из файла?

мой код:

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 голосов
/ 26 апреля 2018

Файлы Pickle недоступны для редактирования, и они никогда не были предназначены для этого. Если вам нужно отслеживать отдельные выбранные элементы, посмотрите на модуль shelve - это позволяет обрабатывать внешнюю коллекцию (протравленных) объектов, например, словарь со строковыми ключами.

0 голосов
/ 26 апреля 2018

Одним из способов может быть выбор списка студентов. Затем, когда вы хотите удалить, вы можете прочитать из файла, удалить как обычно, например, students.remove(), а затем мариновать снова.

...