Write a class iteminfo to store information of different items like Code, name, price, quantity. Write a program to accept data from user and store it in file. Also provide user the facility of searching and updating data file based on code.


In [12]:
import pickle
import os
class item_info(object):
    '''Class to store information of an item.
        Attributes:
            -code
            -name
            -price
            -quantity
            -filename
        Methods'''
    def __init__(self):
        self.code = ''
        self.name = ''
        self.price = 0
        self.quantity = 0
        self.filename = ''
    def enterData(self):
        self.code = raw_input('Enter code: ')
        self.name = raw_input('Enter item name: ')
        self.price = int(raw_input('Enter item price: '))
        self.quantity = int(raw_input('Enter quantity: '))
        self.filename = raw_input('Enter file name')
        self.saveFile(self.filename)
    def saveFile(self,filename):
        f = open(filename,'wb')
        pickle.dump({'code':self.code,
                     'name':self.name,
                     'price':self.price,
                     'qty':self.quantity},f)
        f.close()
    def search(self,code,filename):
        f = open(filename,'rb+')
        t = open('temp.b','wb')
        code = raw_input('Enter item code: ')
        while True:
            try:
                a = pickle.load(f)
                if a['code']==code:
                    print 'Found'
                    for i in a.keys():
                        print i,a[i]
                    choice = raw_input('Do you want to edit this data? Y/N')
                    if choice.lower()=='y':
                        for i in a.keys():
                            a[i] = input(i + ': ')
                        pickle.dump(a,t)
                else:
                    pickle.dump(a,t)
            except EOFError:
                print 'Done'
                f.close()
                t.close()
                os.remove(filename)
                os.rename('temp.b',filename)

In [ ]: