update_dict(data_holder, filename)
> else: # file no exist
> write_book(data_holder, filename)
> break
> else:
> d.clear() #clear dict
> break
There's two elses, but no inital if:....
There's a place to start, right there.
On Wed, 19 Jan 2005 21:27:24 -0500, Jacob S. <[EMAIL PROTECTED]> wrote:
> Hi everyone, sent this on to the list as told to.
> cc to eri to verify my sending to list...
> ;-) Jacob
>
> > dear jacob,
> >
> > sorry to send this to you but if you may, kindly send to tutor list as im
> > no longer subscribed. my problem is in the update dict portion: it just
> > doesnt update regardless how many contacts i add. kindly advise where
> > my mistake is or code gone wrong. the rest of the options i will do on my
> > own so just hold off the helps for now. appreciate all your good help.
> >
> > please cc to this account.
> >
> > --
> > regards,
> > erimendz
> >
> >
> > #!/usr/bin/env python
> >
> > import cPickle, os, sys, re, stat
> > #import string
> >
> > ## Global variables
> >
> >
> > home = '~'
> > filename = os.path.join(os.path.expanduser(home), 'abook.dat')
> > data_holder = {}
> >
> >
> >
> > ## Functions
> > ##################################################################
> >
> >
> > def about_program():
> > print
> > print '\t'*2, 'A simple address book written in Python'
> > raw_input('\nPress <Enter> to continue...')
> >
> >
> > ## add_contact ##
> > def add_contact(d):
> > while True:
> > name = add_name()
> > email = add_email()
> > d[name] = email
> > print 'Add another contact? '
> > ans = ask_yes_no()
> > if ans == 0: # no
> > print 'Save to address book? '
> > get_ans = ask_yes_no()
> > if get_ans == 1: # yes
> > #collected = d
> > check = if_file_exist(filename)
> > if check is True:
> > update_dict(data_holder, filename)
> > else: # file no exist
> > write_book(data_holder, filename)
> > break
> > else:
> > d.clear() #clear dict
> > break
> >
> > def add_name():
> > msg = 'Enter contact name: '
> > while True:
> > try:
> > name = raw_input(msg)
> > if len(name) != 0:
> > if len(name) <= 20:
> > return name
> > else:
> > print 'Name too long: please limit to 20 characters'
> > else:
> > print 'Try again: blank not allowed!'
> > except EOFError: # catch ^C-D keypress
> > print
> >
> > def add_email():
> > msg = 'Enter email address: '
> > while True:
> > try:
> > email = raw_input(msg)
> > if len(email) == 0:
> > print 'Blank not allowed!'
> > else:
> > valid_format =
> > r'[EMAIL PROTECTED](\.[-a-z0-9]+)*\.(com$|\
> > edu$|net$|gov$|mil$|org$|int$|aero$|biz$|coop$|
> > museum$|pro$|info$)'
> > valid_email = re.compile(valid_format)
> > if valid_email.match(email):
> > return email
> > else:
> > print '%s is not a valid address: try again!' % email
> > except EOFError:
> > print
> >
> >
> > def ask_yes_no():
> > try:
> > ask = raw_input('Yes or No? [y|N] ')
> > if ask.lower() in ['y', 'ye', 'yes', 'yep', 'ok']:
> > return 1 # yes
> > else:
> > return 0 # no
> > except EOFError:
> > print
> >
> >
> > def if_file_exist(f):
> > ''' test if file exists; returns boolean '''
> >
> > return os.path.exists(os.path.join(os.path.expanduser('~'), f))
> >
> > def get_filesize(f):
> > ''' check file size '''
> >
> > return os.stat(os.path.join(os.path.expanduser('~'), f))[stat.ST_SIZE]
> >
> >
> > def write_book(d, f):
> > write = open(f, 'wb')
> > cPickle.dump(d, write)
> > write.close()
> >
> > def update_dict(d, f):
> > ''' update the saved dictionary file '''
> >
> > read = open(f, 'rb')
> > newdic = cPickle.load(read)
> > newdic.update(d)
> > read.close()
> >
> >
> >
> >
> > ## view_abook() ##
> > def view_abook(d, f):
> > check = if_file_exist(f)
> > if check is True:
> > # load file and pretty print
> > read = open(f, 'rb')
> > d = cPickle.load(read)
> > for k, v in d.iteritems():
> > print '%s\t%s' % (k, v)
> > read.close()
> > else:
> > print 'no contacts listed!'
> >
> >
> >
> > ## function tester, sort of ##
> > def ifaccessible(f):
> > ''' test if file is accessible by user; returns boolean '''
> >
> > return os.access(os.path.join(os.path.expanduser('~'), f), os.F_OK)
> >
> >
> >
> > def main():
> > while True:
> > select = main_menu()
> > while True:
> > if select in [ '1', 'p']:
> > about_program()
> > break
> > elif select in [ '2', 'a']:
> > add_contact(data_holder)
> > break
> > elif select in [ '3', 's']:
> > print "save_changes()"
> > break
> > elif select in [ '4', 'v']:
> > view_abook(data_holder, filename)
> > break
> > elif select in [ '5', 'f']:
> > print "find_contact()"
> > break
> > elif select in [ '6', 'e']:
> > print "edit_contact()"
> > break
> > elif select in [ '7', 'r']:
> > print "remove_contact()"
> > break
> > elif select in [ '0', 't', 'T']:
> > #print if_file_exist(filename)
> > #print get_filesize(filename)
> > try:
> > print get_filesize(filename)
> > except OSError:
> > print '%s not found!' % filename
> > break
> > elif select in [ '8', 'q']:
> > sys.exit('Goodbye')
> > else:
> > print "'%s' is invalid option!" % select
> > break
> >
> >
> >
> > def main_menu():
> > '''Show menu options'''
> >
> > print """
> > MENU OPTIONS
> > [1] About This [P]rogram
> > [2] [A]dd Contact
> > [3] [S]ave Changes
> > [4] [V]iew Address Book
> > [5] [F]ind Contact
> > [6] [E]dit Contact
> > [7] [R]emove Contact
> > [0] [T]est function
> > [8] [Q]uit
> > """
> >
> > while 1:
> > try:
> > ask = '\nSelect an option: '
> > opt = raw_input(ask)[0]
> > #if opt.isalpha() == True: # redundant True
> > if opt.isalpha():
> > return opt.lower()
> > return opt
> > except (IndexError, EOFError): # catch <Enter>, <^C-D> keys
> > pass
> >
> >
> > ## main program portion ##
> > if __name__ == '__main__':
> > main()
> >
> >
> >
> >
> >
>
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
--
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor