On 07/10/11 09:08, lina wrote:
TOKENS="BE"
LINESTOSKIP=0
INFILEEXT=".xpm"
OUTFILEEXT=".txt"
def dofiles(topdirectory):
for filename in os.listdir(topdirectory):
processfile(filename)
def processfile(infilename):
results={}
base, ext =os.path.splitext(infilename)
if ext == INFILEEXT:
text = fetchonefiledata(infilename)
numcolumns=len(text[0])
for ch in TOKENS:
results[ch] = [0]*numcolumns
for line in text:
line = line.strip()
for col, ch in enumerate(line):
if ch in TOKENS:
results[ch][col]+=1
It would be easier to read(and debug) if you put
that chunk into a function. Using the naming style below
it could be called processOneFileData() for example...
Make it return the results dictionary.
for k,v in results.items():
print(results)
This prints the same thing (results) for as many items
are in results. I'm pretty sure you don't want that.
Just printing results once should be sufficient.
summary=[]
for a,b in zip(results['E'],results['B']):
summary.append(a+b)
I don't know why this gives a key error on 'E' (which basically means
that there is no key 'E') since the code above should guarantee that it
exists. Odd. I'm also not sure why the error occurs after it prints
summary. Are you sure the output is in the sequence you showed in your
message?
print(summary)
writeonefiledata(base+OUTFILEEXT,summary)
def fetchonefiledata(inname):
infile = open(inname)
text = infile.readlines()
return text[LINESTOSKIP:]
def writeonefiledata(outname,summary):
outfile = open(outname,"w")
for elem in summary:
outfile.write(str(summary))
if __name__=="__main__":
dofiles(".")
HTH,
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor