[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