Hi,
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[0]) == 2:
date[0] = '20'+date[0]
if len(date[1]) == 1:
date[1] = '0'+date[1]
if len(date[2]) == 1:
date[2] = '0'+date[2]
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[0])
bits[0]=folks
bits.insert(0,bits[0])
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!