Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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)