[Tutor] Why doesn't it save the data before exiting? CORRECTION
Bob Gailer
bgailer at alum.rpi.edu
Tue Jun 27 01:19:06 CEST 2006
Bob Gailer wrote:
> Nathan Pinno wrote:
>
>> Hey all,
>>
>> I am needing help on this. Why isn't it saving the data beore exiting
>> the program?
>>
> But it does save it. What evidence do you have that it is not?
>
> Please in the future always tell us what the evidence of a problem is.
>
> Also I suggest you add validation of user input, to avoid the program
> terminating if the user hits the wrong key. In fact the whole menu thing
> would be easier to manage if the choices were character rather than
> integer. Then you don't need int() conversion and the exception raising
> if the user does not enter an integer string.
>
> Similar comment regarding checking input before applying float().
>
> Consider % formatting for the outputs as in:
> print "%s\t $%2f\n" % (account, accountlist[account]) # instead of
> print account+"\t $"+str(accountlist[account]),"\n"
>
> Also I suggest you not open store for writing until just before the
> pickle.dump. Otherwise it is possible to have an empty file on which
> pickle.load will raise an exception.
>
>> I don't get an error before exiting.
>>
> Good. You should not, unless you enter something that won't convert to
> integer, or string [ I MEANT float ], or you leave an empty account.txt file.
>
>>
>> Here's the code so far:
>> accountlist = {}
>>
>> def load_file(ac):
>> import os
>> import pickle
>> filename = 'accounts.txt'
>> if os.path.exists(filename):
>> store = open(filename, 'r')
>> ac = pickle.load(store)
>> else:
>> store = open(filename, 'w')
>> store.close()
>>
>> def save_file(ac):
>> import pickle
>> store = open('accounts.txt', 'w')
>> pickle.dump(ac, store)
>> store.close()
>>
>> def main_menu():
>> print "1) Add a new account"
>> print "2) Remove a account"
>> print "3) Print all info"
>> print "4) Find account"
>> print "5) Deposit"
>> print "6) Withdraw funds"
>> print "9) Save and exit."
>>
>> def add():
>> print "Add a new account"
>> account = raw_input("Account Name: ")
>> amount = float(raw_input("Amount: "))
>> accountlist[account] = amount
>>
>> def remove():
>> print "Remove a account"
>> account = raw_input("Account: ")
>> if accountlist.has_key(account):
>> del accountlist[account]
>> else:
>> print account," was not found."
>>
>> def printall():
>> print "Account Info"
>> for account in accountlist.keys():
>> print account+"\t $"+str(accountlist[account]),"\n"
>>
>> def lookup():
>> print "Specific Account Info"
>> account = raw_input("Account: ")
>> if accountlist.has_key(account):
>> print account+"\t $"+str(accountlist[account]),"\n"
>> else:
>> print account," was not found."
>>
>> def deposit():
>> print "Deposit funds"
>> account = raw_input("Account: ")
>> if accountlist.has_key(account):
>> amount = float(raw_input("Amount: "))
>> accountlist[account] += amount
>> print account+"\t $"+str(accountlist[account]),"\n"
>> else:
>> print account," was not found."
>>
>> def withdraw():
>> print "Withdraw Funds."
>> account = raw_input("Account: ")
>> if accountlist.has_key(account):
>> amount = float(raw_input("Amount: "))
>> accountlist[account] -= amount
>> print account+"\t $"+str(accountlist[account]),"\n"
>> else:
>> print account," was not found."
>>
>> print "Account Tracker"
>> print "By Nathan Pinno"
>> print
>> load_file(accountlist)
>> while 1:
>> main_menu()
>> menu_choice = int(raw_input("Which item? "))
>> if menu_choice == 1:
>> add()
>> elif menu_choice == 2:
>> remove()
>> elif menu_choice == 3:
>> printall()
>> elif menu_choice == 4:
>> lookup()
>> elif menu_choice == 5:
>> deposit()
>> elif menu_choice == 6:
>> withdraw()
>> elif menu_choice == 9:
>> break
>> else:
>> print "That's not an option. Please choose a valid option."
>> save_file(accountlist)
>> print "Have a nice day!"
>>
>> Thanks for the help so far!
>> Nathan Pinno
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>
>
>
--
Bob Gailer
510-978-4454
More information about the Tutor
mailing list