I am now trying to extend my program to allow the events in the file to be sorted by any of the fields (date, time, title, description, location and to have an optional list of attendees) Whether the attendees are present or not I need to allow either an empty list or a list of their names to be displayed.
I have tried implementing some code to allow the fields inside the file to be sorted but I am getting confused as I am still very new to Python. Please could someone help.
Here is my code:
import cPickle def print_menu(): print '1. Add an Event' print '2. Save Events to File' print '3. Load Events from File' print '4. Sort Events' print '5. Quit' print "" event_list =  menu_choice = 0 print_menu() start = 0 tmp =  while True: menu_choice = input("Select Menu Item (1-4): ") if menu_choice == 1: try: print "Add Event" date = raw_input("Enter Date (yyyy,mm,dd): ") # Assuming that the user inputs this: yyyy,mm,dd date = date.split(',') if len(date) == 2: date = '20'+date if len(date) == 1: date = '0'+date if len(date) == 1: date = '0'+date date = '-'.join(date) # if the format yyyy,mm,dd is not entered except IndexError: print "That was not in the format yyyy,mm,dd" start # restarts the loop continue time = raw_input("Time: ") title = raw_input("Title: ") desc = raw_input("Description: ") loc = raw_input("Location: ") #attendop = raw_input("Include Attendees(Y/N)?") #if attendop = y: attend = raw_input("Attendee(s): ") #elif attendop = n: #ui = "Date: " + date, "Time: " + time, "Title: " + title, "Description: " + desc, "Location: " + loc + '\n' #else: #attendop = raw_input("Enter Y or N") ui = "Date: " + date, "Time: " + time, "Title: " + title, "Description: " + desc, "Location: " + loc, "Attendee(s): " + attend + '\n' event_list.append(ui) elif menu_choice == 2: filename = raw_input("Filename to save: ") pickle_file = open(filename, "w") cPickle.dump(event_list, pickle_file) pickle_file.close() elif menu_choice == 3: try: filename = raw_input("Filename to load: ") pickle_file = open(filename, "r") events = cPickle.load(pickle_file) # events is a list of events pickle_file.close() sortitem = raw_input("Sort By.. (Enter date, time, title, desc, loc or attendee):") if sortitem == date: for line in events: line = line[:-1] bits = line.split('\t') folks = eval(bits) bits=folks bits.insert(0,bits) tmp.append(bits) tmp.sort results =  for line in tmp: results.append(line[1:]) print str(results)+"\n" #for event in events: # print each member of events #print "Events: %s" % '\t'.join(list(event)) except IOError: print "No such file to load" start continue elif menu_choice == 5: break else: print_menu() print "Goodbye"
the parts I have been testing for the optional attendees I have commented out as I was unable to run my program to test the sorting due to errors.
Thank You in advance!