Hello all,

Thank you all for your help.  I appreciate it alot.

I have been trying to work with file IO alot recently and would like to improve my little program so that I no longer use a hard coded list, but a text file that I can edit easily.

The text file is three lines long and looks exactly like this:

Reminder1,2009_10_28
Reminder2,2009_11_01
Reminder3,2009_11_15

My program consists of the following code:
============
#]------------------[import modules]------------------[
from time import strftime, mktime, localtime
from WConio import textcolor
#]--------------------------------------------------------[
#]------------------[define functions]------------------[
def read_reminders():
   print "\nReading text file into program: reminders.txt"
   text_file = open("reminders.txt","r")
   reminders = [line.strip().split("'") for line in text_file]
   text_file.close()
   print reminders
#
def get_computer_date():
   #Get today's date from the computer
   todays_date = strftime("%Y_%m_%d")
   return todays_date
#
def color_print(strings):
   #Change the text color in the WinXP dos shell
   #The way to use:
   #color_print([("string",color number),\
   #(str(variable),color number),(etc)])
   for string in strings:
       textcolor(string[1])
       print string[0],
#
def change_to_julian(reminder_date):
   #Receives the year, month, and day
   #in the form of a single string (2009_10_15)
   #and changes it into three different int
   #variables.  Then take those three variables
   #and append six zeros and change into a
   #julian date.
   date = []
   date = reminder_date.split("_")
   year = int(date[0])
   month = int(date[1])
   day = int(date[2])
   timetuple = (year, month, day) + ( (0,) * 6 )
   unixtime = mktime(timetuple)
   timetuple = localtime(unixtime)
   print days_left(timetuple[7])
   # [7] is the number of julian-date field of
   #the unixtime tuple.
   return days_left(timetuple[7])
#
def days_left(julian_date):
   #This function calculates the days left
   #until a reminder.  If the days left are
   #greater than 0 it will print normally.
   #If it is -1 then it will print differently.
   #Also if it is greater than -1 it will print
   #yet again differently.
   days_until_reminder = julian_date - localtime().tm_yday
   if days_until_reminder > 0:
color_print ([("There are",7),(str(days_until_reminder),4),("days left until this reminder.",7),("\n",7)])
   elif days_until_reminder == -1:
color_print ([("\tYou have missed this reminder by",4),(str(days_until_reminder*-1),4),("day!",4),("\n",7)]) color_print [(" ------------------------------------------------------------------------",4),("\n",7)])
   else:
color_print ([("\tYou have missed this reminder by",4),(str(days_until_reminder*-1),4),("days!",4),("\n",7)]) color_print [(" ------------------------------------------------------------------------",4),("\n",7)])
print
#
def compare_reminders(todays_date):
   #This function compares the reminders
   #to the computer date.
   #It has three different paths:
   # 1.Matches today's date
   # 2.The reminder date has already
   #  passed by
   # 3.The reminder date is yet to
   #  come.
   #After determining which it is it will
   #access the change_to_julian and
   #days_left functions.
   #reminders.sort()
color_print ([(" [-------------------------------------------------------------------------]",4),("\n",7)])
   index = 0
   while index < len(reminders):
       if todays_date == reminders[index][1]:
           print
color_print [(" ------------------------------------------------------------------------",4),("\n",7)]) print "Today's reminder is: ",reminders[index][0],"on",reminders[index][1] color_print ([("\t\tTake care of this reminder immediately",2),("\n",7)])
       elif todays_date > reminders[index][1]:
           print
print "Whoops, you missed the following reminder.",reminders[index][0],"on",reminders[index][1]
           change_to_julian(reminders[index][1])
       else:
           print
print "Your upcoming reminders are: ",reminders[index][0],"on",reminders[index][1]
           change_to_julian(reminders[index][1])
       index = index + 1
color_print ([(" [-------------------------------------------------------------------------]",4),("\n",7)])
#]--------------------------------------------------------[
#]-------------------[Main Program]-------------------[
read_reminders()
print reminders
compare_reminders(get_computer_date())
pause_it = raw_input("Press a key to end: ")
#]--------------------------------------------------------[
============
Could someone explain to me why my read_reminders function retrieves the information, but cannot process that information?

When I try and run the program I get the following error message:
============
Reading text file into program: reminders.txt
[['Reminder1,2010_10_15'], ['Reminder2,2010_11_01'], ['Reminder3,2010_11_15']]
Traceback (most recent call last):
   File "reminders.py", line 182, in <module>
       print reminders
NameError: name 'reminders' is not defined
============

Thanks in advance for your help,

Katt
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to