On 2011-10-07 14:21, lina wrote:
 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?

  One simple explanation:  it continued on to the next file, which has
 neither "E" nor "B" in it.

In this directory, I only kept one file. try.xpm

That's wrong.

  $ more try.xpm
aaEbb
aEEbb
EaEbb
EaEbE

$ ls
counter-vertically-v2.py  try.xpm
counter-vertically.py   try.txt

As "ls" proves, you have *4* files in the directory.

You start your script with "dofiles(".")". This function gets a list of *all* files in the directory in an *arbitrary* order and processes each of it.

In your function "processfile" you first create an empty dictionary ("results = {}") and then you put values into the dictionary *only* for xpm-files ("if ext == INFILEEXT:"). *But* you print the summary for *every* file because the indentation at the end of the function is outside the if-branch where you check for the file extension. So for every file which isn't a xpm-file, "results" is an empty dictionary (see first line of the function) and therefore "zip(results['E'], results['B'])" will throw an exception.

How to solve it? I personally would check for the file extension in the function "dofiles" and would only continue with xpm-files (in other words move the if-statement from "processfile" to "dofiles".)

Bye, Andreas

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to