On Tue, 28 Jun 2005 05:50:54 -0400 Kent Johnson <[EMAIL PROTECTED]> wrote:
> Don Parris wrote: > > Just getting back to this - Mondays are always hectic. This recipe is > > the one I saw and like. It looks cool! In my brief efforts tinkering > > with it, I am not really getting very far. I saved the recipe, and > > import it into the file containing all my database functions. In one of > > the functions, I have the following: > > > > I used the "from tbl_Tabs import *" approach to import the recipe. If I > > should be doing this differently, just say so. > > > > for record in Results: > > print '%-15s\t%-15s\t%-15s' % record > > # I still want to print to screen, then... > > > > mbrPhone = open('mbrPhone.txt', 'w') > > mbrPhone.write(indent(record, hasHeader=False, > > separateRows=True)) mbrPhone.close() > > The problem is you are just passing one record to indent(). It processes > the whole table at once so you have to pass the list of records, i.e. > mbrPhone.write(indent(Results, hasHeader=False, > separateRows=True)) > > and do this outside the loop or you will write the file once for every > record. So your code should look like this: > > for record in Results: > print '%-15s\t%-15s\t%-15s' % record > # I still want to print to screen, then... > > # Notice different indent from your code > mbrPhone = open('mbrPhone.txt', 'w') > mbrPhone.write(indent(Results, hasHeader=False, separateRows=True)) > mbrPhone.close() > O.k., I'm curious about the indentation issue here. There is only one file, and it has the correct information - looking at it from a text editor. Is my version overwriting the file every time it iterates then? You'll get a laugh out of this, because when I was playing with sending the file to the printer, I did not dedent the printer call, and it did try to print a copy of the file for each record. Needless to say, I learned the command "lprm" Saturday! I caught onto the indentation, which fixed that. However, I did not pay attention to the code above - probably because I don't have 50-something files named mbrPhone*.txt. Go ahead and laugh, I did! > > > > I first assumed that "record", and then "Results" could be substituted > > for"rows", per the recipe. I also tried "rows", and assigning "record", > > and then "Results" to "rows". O.k., you can laugh all you want. I > > tried playing with the various arguments, and found that to be of little > > value. > > > > The traceback refers to a type error: iteration over a non-sequence. > > The query returns a tuple, as I understand it. I also understand a > > tuple to be a sequence. If this is really as simple as the 3 lines you > > pointed out above, I know I'm missing something in the implementation. > > Yes, a tuple is a sequence. If you still get an error with the code above, > please post the exact error message and traceback (copy / paste from the > output), there is a lot of useful information in it that can be lost if > you paraphrase. > > Kent > O.k., Here we go. Global name "rows" is not defined. My guess is that "rows" needs to know that it should be holding "Results", but maybe it should already know that. I tried to say rows = Results, but that did not help. This seems to come back to the difficulty I have with passing arguments around. ### Revised Code ### print 'Phone List' for record in Results: print '%-15s\t%-15s\t%-15s' % record # rows = Results did not work mbrPhone = open('mbrPhone.txt', 'w') mbrPhone.write(indent(rows, hasHeader=False, separateRows=False, prefix='| ', postfix=' |')) mbrPhone.close() ### Traceback ### Traceback (most recent call last): File "ekklesia.py", line 165, in ? Main() File "ekklesia.py", line 160, in Main RunMenu(Menu_Main) File "ekklesia.py", line 31, in RunMenu if len(MenuList[sel]) == 3: MenuList[sel][1](MenuList[sel][2]) File "ekklesia.py", line 32, in RunMenu else: MenuList[sel][1]() File "/home/donp/python/ekklesia/ekklesia_db.py", line 61, in mbr_Phone mbrPhone.write(indent(rows, hasHeader=False, separateRows=False,\ NameError: global name 'rows' is not defined BTW, I really appreciate your patience and willingness to help me understand this. If I had ever dreamed that I would have a desire to program 20 years after the fact, I would have stopped passing notes in Math class. I do it well, but hate it. Yet, I find myself drawn further and further into the code, actually wanting to know more about it - why it does what it does. Don -- evangelinux GNU Evangelist http://matheteuo.org/ http://chaddb.sourceforge.net/ "Free software is like God's love - you can share it with anyone anytime anywhere." _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor