G. McKinnon Ryall wrote: > I have a script that outputs results to a file (one file, reused.) I would > like to have an output file in this format > > #-------------------- > (blank line) > (output from program (only one line)) > name > (T/F) > (result iteration, shortened to x.) > #--------------------- > so like this > #--------------------- > > 55 > Joe > false > 1 > > 96 > Bob > true > 2 > > 28 > Mike > true > 3 > #--------------------- > > I couldn't think of a way to read the last written number (it would be a > multiple of 5).
Just read the lines from the file, convert the last line to an int and add the new record. Example: with open("tmp.txt", "a+") as f: line = "0" # default when the file is empty or doesn't exist for line in f: pass n = int(line) + 1 f.write("{}\n".format(n)) > I know how to add 1 and print. Also, how would I arrange > #-------- > output.write("\n") > output.write(x_string) > output.write("\n") > output.write(name) > output.write("\n") > output.write(exists_string) > output.write("\n") > #------- > so that it didn't show up like this > FIRST TIME Now you have the n from my above sample you can run some of the code conditionally: if n == 1: ... else: ... > Also, how would I make this program better in general? Long if elif sequences can sometimes be simplified with a dict lookup: if a == 1: print "alpha" elif a == 2: print "beta" ... then becomes messages = {1: "alpha", 2: "beta"} try: print messages[a] except KeyError: # handle cases not covered by the value lookup approach Also, Python allows multiline strings: f.write("alpha\n") f.write("beta\n") becomes f.write("""\ alpha beta """) > #BEGIN > # Importing exists. Simple English. Nonsensical, but English nonetheless. > from os.path import exists > #Asking for your name > name = raw_input("Hello!\nWhat is your name?\n\n") > #Asking for the number and reacting to given response > x = int(raw_input("\tFor the purposes of testing, please select a number > between one and 100\n\n\t")) > > if x < 0: > x = 4554073 > print "\t\tNo negatives, asshole. Number changed to '4554073' for > 'ASSHOLE', asshole." > elif x == 0: > print "\t\tMore than zero." > elif x > 100: > x = 101 > print "\t\tDon't fuck with the computer." > elif x == 42: > print "\t\tThe meaning of life, the universe and everything." > elif x == 7: > print "\t\t7. How... creative. *cough* UNORIGINAL *cough*" > elif x == 3: > print "\t\t3! It's a magic numba\'. Yes it is! It's a magic numba\'." > elif x == 37: > print "\t\tThe two most common numbers." > elif x == 99: > print "\t\tI got 99 problems and a- wait, no, that's your IQ." > elif x == 27: > print "\t\tCONGRATULATATIONS! YOU'VE FOUND MY FOAVORITE NOMBER!" > else: > print "In all aspects your number appears to be normal." > #Changing name to a string > name_string = "%s" % name > #Changing x to a string > x_string = "%s" % x > #Checking if file exists for archival purposes > exists = exists("number_output.txt") > exists_string = "%s" % exists > #Opening output file > number_output = 'number_output.txt' > output = open(number_output, 'a') > #Writing to file > output.write("\n") > output.write(x_string) > output.write("\n") > output.write(name) > output.write("\n") > output.write(exists_string) > output.write("\n") > #END _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor