How do I know? Simple. Next time I load it and ask it to print the list of accounts and how much in each, I only get:
Account Info then the menu again, with no info. Nathan Pinno ----- Original Message ----- From: "Bob Gailer" <[EMAIL PROTECTED]> To: "Bob Gailer" <[EMAIL PROTECTED]> Cc: "Nathan Pinno" <[EMAIL PROTECTED]>; <[email protected]> Sent: Monday, June 26, 2006 5:19 PM Subject: Re: [Tutor] Why doesn't it save the data before exiting? CORRECTION > 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 - [email protected] >>> http://mail.python.org/mailman/listinfo/tutor >>> >> >> >> > > > -- > Bob Gailer > 510-978-4454 > > _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
