Spis treści

Kurs języka Python - Lista 7.

Zadanie 1.

Zadanie 2.

Format pliku: autor;tytul;strony

from optparse import OptionParser
import csv
import sys

names = {"author": 0, "title": 1, "pages": 2}

def main():
        parser = OptionParser()
        parser.add_option("-f", "--file",       type="string", dest="file")
        parser.add_option("-d", "--delete",     type="string", dest="delete")
        parser.add_option("-a", "--add",        type="string", dest="add")
        parser.add_option("-v", "--verbose",    action="store_true", dest="verbose", default=False)
        parser.add_option("-p", "--print",      action="store_true", dest="display", default=False)

        (options, args) = parser.parse_args()
        if not options.file:
                if options.verbose:
                        print "No file specified"
                sys.exit(1)
        
        try:                    
                if options.display:
                        fd = open(options.file, "r")
                        if options.verbose: print "File \"" + options.file + "\" opened"
                        reader = csv.reader(fd, delimiter=";", quoting=csv.QUOTE_NONE)
                        for num, entry in enumerate(reader):
                                print "%02d: " % (num+1) + ", ".join(entry)
                elif options.delete:
                        print options.delete.split("=")
                        field, value = options.delete.split("=")
                        field = names[field]
                        fd = open(options.file, "r+")
                        if options.verbose: print "File \"" + options.file + "\" opened"
                        reader = csv.reader(fd, delimiter=";", quoting=csv.QUOTE_NONE)
                        writer = csv.writer(fd, delimiter=";", quoting=csv.QUOTE_NONE)
                        db = [] 
                        for entry in reader:
                                if entry[field] != value:
                                        db.append(entry)
                                elif options.verbose:
                                        print "Deleted: " + str(entry)
                                
                        fd.truncate(0)
                        fd.seek(0)
                        writer.writerows(db)
                elif options.add:
                        fd = open(options.file, "a")
                        if options.verbose: print "File \"" + options.file + "\" opened"
                        writer = csv.writer(fd, delimiter=";", quoting=csv.QUOTE_NONE)
                        writer.writerows([options.add.split(";")])
        except:                 
                if options.verbose:
                        print "An exception occured"
                sys.exit(1)     

if __name__ == "__main__":
        main()

Zadanie 3.