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()