Python 如何获取文件上一个对象的信息 def\uuuu初始化(自): self.name=“” self.id=“” self.sal=0.0 自限=0.4*self.sal self.ded=0.1*self.sal self.npay=self.sal+self.allowment-self.ded def输入(自): self.name=原始输入(“名称”) self.id=原始输入(“id”) self.sal=浮动(原始输入(“工资”)) def创建(自我): f=开放(“支付日”、“wb”) pickle.dump(自我,f) f、 关闭() def read_文件(自): f=未结('pay.dat','rb') x=酸洗负荷(f) 打印“u”*45 打印{0:
您的创建方法:Python 如何获取文件上一个对象的信息 def\uuuu初始化(自): self.name=“” self.id=“” self.sal=0.0 自限=0.4*self.sal self.ded=0.1*self.sal self.npay=self.sal+self.allowment-self.ded def输入(自): self.name=原始输入(“名称”) self.id=原始输入(“id”) self.sal=浮动(原始输入(“工资”)) def创建(自我): f=开放(“支付日”、“wb”) pickle.dump(自我,f) f、 关闭() def read_文件(自): f=未结('pay.dat','rb') x=酸洗负荷(f) 打印“u”*45 打印{0:,python,class,object,file-handling,Python,Class,Object,File Handling,您的创建方法: def __init__(self): self.name='' self.id='' self.sal=0.0 self.allowance=0.4*self.sal self.ded = 0.1*self.sal self.npay = self.sal+self.allowance-self.ded def Input(self): self.name = raw_input('name') self.id =
def __init__(self):
self.name=''
self.id=''
self.sal=0.0
self.allowance=0.4*self.sal
self.ded = 0.1*self.sal
self.npay = self.sal+self.allowance-self.ded
def Input(self):
self.name = raw_input('name')
self.id = raw_input('id')
self.sal = float(raw_input("salary"))
def create(self):
f = open("pay.dat","wb")
pickle.dump(self,f)
f.close()
def read_file(self):
f = open('pay.dat','rb')
x = pickle.load(f)
print"_"*45
print '{0:<15s}{1:15s}{2:15s}'.format("Employee_Id","Name","Basic salary")
print"_"*45
print '{0:<15s}{1:15s}{2:15f}'.format(x.id,x.name,x.sal)
f.close()
def add(self):
self.Input()
self.create()
self.read_file()
将上一个文件截断为0字节,并在每次调用时写入新对象的信息。若要保留文件信息而不截断它,请在“ab”
模式下打开它,而不是在“wb”
模式下打开它
也就是说,用于读取和显示信息的代码将只从文件中读取一个对象。即使它正在读取多个对象,它甚至不会尝试在读取的对象上循环以打印多个对象上的信息
这里唯一有效的方法是,您可以在同一个文件中按顺序对多个对象进行pickle,然后它们按顺序将它们读回
因此,您可以像下面这样重写“read_file”方法,但事实上您甚至没有尝试创建循环来迭代多个对象,这表明您必须学习更多内容,以便更好地理解此示例。请确保您获得了一些关于序列和循环的阅读和练习(用于
和while
)。这里看起来是获取基本知识的好地方:
def read_文件(自):
打印“u”*45
打印“{0:请避免像这样破坏示例。在没有实际的类声明的情况下查看类ody是令人不安的。
def create(self):
f = open("pay.dat","wb")
pickle.dump(self,f)
f.close()
def read_file(self):
print"_"*45
print '{0:<15s}{1:15s}{2:15s}'.format("Employee_Id","Name","Basic salary")
print"_"*45
with (open('pay.dat','rb')) as f:
while True:
try:
x = pickle.load(f)
except EOFError:
# no more objects to read - exit loop
break
print '{0:<15s}{1:15s}{2:15f}'.format(x.id,x.name,x.sal)