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