I did something like this about three or four months ago...
This is what I did. Notice the use of the built-in str() and eval()
functions to write and receive data to and from Telephone.cfg...
from __future__ import division
tel = {}
try:
file = open('Telephone.cfg', 'r')
except:
file = open('Telephone.cfg','w')
file.close()
file = open('Telephone.cfg','r')
try:
tel = eval(file.read())
a = 0
except:
a = 1
print "No entries on file."
pass
print """\
Commands are:
add
get
save
delete
quit
all is a wildcard
"""
while 1:
ask = raw_input('Tell me what you wish to do. ')
if ask == "quit":
break
ask = ask.split(" ")
command = ask[0]
entity = ask[1:]
entity = " ".join(entity)
if entity == '':
entity = raw_input("Who do you want to %s? " % command)
if command == 'add':
person = entity
if tel.has_key(person):
print "That person is already in there. If you wish to edit the
file, please delete the record first."
else:
tel[person] = raw_input("What is their phone number? ")
if command == 'get':
if a == 1:
print "Sorry, there are no entries available."
else:
person = entity
if person == 'all':
key = tel.keys()
key.sort()
print
for x in key:
print "%s\n%s\n" % (x,tel[x])
elif tel.has_key(person):
print "\n%s\n%s\n" % (person,tel[person])
else:
print "%s is not in your records." % person
if command == 'save':
file=open('Telephone.cfg', 'w')
file.write(str(tel))
file.close()
print 'Saved in Telephone.cfg'
if command == 'delete':
if a == 1:
print "Sorry, there are no entries available."
else:
person = entity
if person == 'all':
tel={}
newfile=open('Telephone.cfg', 'w')
newfile.close()
else:
if tel.has_key(person):
del tel[person]
else:
print "%s is not in your records." % person
file.close()
file = open('Telephone.cfg', 'w')
file.write(str(tel))
file.close()
As always, feel free to modify, use, and otherwise tear apart my code and
give me suggests on how to improve it.
Jacob Schmidt
> Dear Tutor,
>
> I like to know what is the proper procedure (is algorithmn the right
> term?) in creating data in a program, write it to file, close the app
> then retrieve the data when run again. Basically, I'm trying to simulate
> a simple address book (well not really for the datas are just names for
> now) and so far have created the basic menu interface. It is console
> base so forget gui. I ask user input and store it in a list. There are
> menus to change, delete the data, and to save the data list in file. I
> use cPickle for this and have verified the file is created by checking
> in my $PWD. I want to retrieve that data when program is run again. What
> to add in my code? I thought not to post the code but explain it as
> above.
>
> What i want: when program is run again, the saved data is loaded when user
> selects option 1 below. Of course the first time it is run, the list is
> empty.
>
> def print_options():
> print '''
> Options:
> [1] - Print content of list
> [2] - Add name to list
> [3] - Delete name from list
> [4] - Change name in list
> [5] - Save list to file
> [P] - Print this menu
> [Q] - Quit
> '''
>
>
>
> --
> Regards,
> Eri Mendz
> Using PC-Pine 4.61
>
>
> --
> Using PC-Pine 4.61
>
> _______________________________________________
> Tutor maillist - [EMAIL PROTECTED]
> http://mail.python.org/mailman/listinfo/tutor
>
>
_______________________________________________
Tutor maillist - [EMAIL PROTECTED]
http://mail.python.org/mailman/listinfo/tutor