from datetime import datetime
import shelve,os
class userdatabase(object):
def init(self,dbfile):
self.db = {}
if os.path.exists(dbfile):
self.db = shelve.open(dbfile, 'c')
self.dbfile = dbfile
self.flag = False
def __del__(self):
data = shelve.open(self.dbfile, 'c')
data.update(self.db)
data.close()
def login(self,user,pwd):
if user not in self.db:
self.flag = False
elif self.db[user][0] == pwd:
self.db[user][1] = datetime.now()
self.flag = True
def deluser(self,user):
if self.flag:
self.db.pop(user)
else:
print ('login first')
def updateuser(self,user,pwd):
if self.flag:
self.db[user] = [pwd,datetime.now()]
else:
print ('login first')
def listall(self):
if self.flag:
for user in self.db:
print( user, self.db[user][0], self.db[user][1])
else:
print( 'login first')
a = userdatabase('userdata.txt')
Traceback (most recent call last):
File "", line 1, in
a = userdatabase('userdata.txt')
File "C:\Users\Administrator\Desktop\用户注册.py", line 16, in init
self.db = shelve.open(dbfile, 'c')
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\shelve.py", line 227, in init
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\dbm__init__.py", line 88, in open
raise error0
dbm.error: db type could not be determined