At 06:54 PM 1/12/07 GMT, you wrote: >On Fri, 12 Jan 2007 09:15:44 -0800, Karyn Williams <[EMAIL PROTECTED]> >declaimed the following in comp.lang.python: > >> I am new to Pyton. I am trying to modify and understand a script someone >> else wrote. I am trying to make sense of the following code snippet. I know > > "someone else" didn't write Python either, looking at that mishmash ><G>
Thanks, Marc and Dennis. Actually as I think about it, this operation should be able to be done in one loop, not the ten or so that it is currently taking. Read in a file "*.log" (excluding certain named files "1.log"), total up x number of rows of the 2nd and third columns, push (filename, total col2) (filename, total col 3) to two lists, sort -r and generate one web page each with the top ten. That is what this script is supposed to be doing. >> line 7 would be best coded with regex. I first would like to understand >> what was coded originally. thelistOut looks like a hash to me (I'm more >> familiar with perl). Perhaps someone could translate from perl to python >> for me - not in code but just in concept. >> >> >> Here is the code. This script is reading the list thelistOut and then >> removing any items in RSMlist and taking the remainder and putting them in >> graphAddressOut with the formatting. >> >> This is a SAMPLE of what is in the lists referenced below in the loop: >> >> >> thelistOut = [(632, >> ['/usr/local/www/data-dist/mrtg/main/test/172.16.0.23_9.log']), (145, >> ['/usr/local/www/data-dist/mrtg/main/test/172.16.0.23_13.log']), (0, >> ['/usr/local/www/data-dist/mrtg/main/test/172.16.0.23_5.log'])] >> > > This is a list containing three elements. Each element is a tuple >containing two sub-elements. The first sub-element appears to be an >integer (I have no idea of the significance of the value at this time). >The second sub-element is another list containing a single >sub-sub-element -- that sub-sub-element is a string (file path name). > >> RSMList = ['172.16.0.1_1', '172.16.0.1_2', '172.16.0.1_3', '172.16.0.1_4', >> '172.16.0.1_5'] >> >> >> >> #--------------------------Loop 1 ------------------------- >> >> w = 0 >> while w < 45: >> > for w in xrange(45): > >> fileOut = string.split(thelistOut[w][1][0],".log") >> fileOutSplitedCommon = string.split(fileOut[0], "main/") >> fileOut2D = string.split(fileOutSplitedCommon[1], "/") >> fileOut = string.split(fileOut[0],"data-dist") >> > Direct use of the string module is now frowned upon. For future reference, why is direct use of the string module frowned upon, and what does one use instead ? >Also, since these are file path names, using operations in the os.path module would >be more appropriate... I'll look into os.path, but what this loop should be doing is matching and removing the entries from thelistOut ( and thelistIn ) that are listed in RSMlist. Or as is being done, not writing them to the new list, outputOut (graphAddressOut). Its just a matching operation, not really a path/filename op. This is why I will be changing this to a regex. >> if fileOut2D[1] in RSMList: >> w = w + 1 >> continue > > Confusing logic, having two places where "w" is incremented. Using a >"for" loop would mean neither increment statement is needed. Actually, >"w" isn't even needed, replace the while/for with > > for fid in thelistOut: > fileOut = fid[1][0] #that [1] is getting the second element > of > >the tuple, and the [0] gets the string out of that list (why a list of >one element string data?) > >> graphAddressOut = tag1 + logUrl + fileOut[1] + extention1 + tag2 + >> "<b>SWITCH: " + string.swapcase(fileOut2D[0]) + " & >> nbsp;PORT ID: " + fileOut2D[1] + "</b><br>" + imgTitleTag + imgTag1 + >> logUrl + fileOut[1] + extention2 + imgTag2 + tag3 + tag5 > > This could be cleaned up too, but I'll ignore it at the moment. > >> outputOut.append(graphAddressOut) >> strOut = strOut + graphAddressOut >> >> w = w + 1 >> >> #--------------------------Loop 1 ------------------------- > > > I think what you call a "hash" in PERL is a dictionary in Python: > >dct = { key1 : value1, ... , keyn : valuen } > >aval = dct[keyx] > > Nothing of the sort used in the code you show above. -- Karyn Williams Network Services Manager California Institute of the Arts [EMAIL PROTECTED] http://www.calarts.edu/network -- http://mail.python.org/mailman/listinfo/python-list