Python Pickle-2问题
我正在使用python pickle来维护联系人列表。我有两个问题:Python Pickle-2问题,python,pickle,Python,Pickle,我正在使用python pickle来维护联系人列表。我有两个问题: 在添加一个新的人员后,我看不到所有人员的整个列表都已打印出来。只有新人被打印出来。代码有什么问题 如果我要删除一个联系人,如何更改本地文件 守则: import pickle class contact: person= {}; def add(self, name,contact): self.person[name] = contact; store2file(se
import pickle
class contact:
person= {};
def add(self, name,contact):
self.person[name] = contact;
store2file(self.person);
#print(self.contactlist);
def delete(self,name):
del self.person[name];
#print(self.person);
def modify(self,name,contact):
self.person[name] = contact;
store2file(self.person);
def store2file(person):
mycontactfile = 'contactlist.data';
f = open(mycontactfile,'wb');
pickle.dump(person,f);
f.close();
f = open(mycontactfile,'rb');
storedcontact = pickle.load(f);
print (storedcontact);
def main():
mycontact = contact();
option = input('Pls select option: 1 Add; 2 delete; 3 update: ');
if option == '1':
name = input('Enter the name: ');
contactNo = input('Enter the contact number: ');
mycontact.add(name,contactNo);
store2file(mycontact);
elif option =='2':
name = input('Enter the name: ');
mycontact.delete(name);
elif option =='3':
name = input('Enter the name: ');
contactNo = input('Enter the contact number: ');
mycontact.modify(name,contactNo);
else:
print('Pls select proper option');
main()
来自python文档:
“w”仅用于写入(具有相同名称的现有文件将被删除),而“a”打开文件进行追加
要删除联系人,请修改其行并将其从文件中删除,请参见您只将新联系人写入文件,覆盖现有数据。您可以将列表写入文件(总是在写入之前读取列表并附加新值),以获得您想要的行为 工作流程应如下所示:
- 从文件中读取当前列表
- 更改内容(添加联系人、删除联系人)
- 也许换更多的东西
- 将列表写回文件
- 使用
而不是'a'
和/或'w'
使用同一文件处理程序多次向“Guy”建议的文件追加pickle.dump()
pickle.load()
要从这样的文件中删除一个条目,您必须加载每个条目,并将您仍然需要的所有条目保存回该文件(如
filter()
)。为什么您要使用名为store2file
的方法读取联系人文件?如果我只想使用Pickle而不是list,可以实现吗?我在答案中添加了一个方法来实现。谢谢。看来a不适用于泡菜?没有错过什么吗?