When attempting to write a file, I can get this same error when any of following conditions applies:
The file exists and is marked read-only.
I don't have write permission for the folder and therefore cannot create a
file.
The file is already open in another process.
Is there any way to separate out the above three causes? If not, then I would
say that this is an extraordinarily poor design.
You get the same Exception
as your base problem is "You can't do this" but the details are contained in the exception instance, (or in a string on older pythons), so if you handle the problem as:
try:outfile = open('somename.txt', 'w')
except IOError, e:print "Not allowed", e
You will get a lot more information. (N.B. if you are running python 3 you will need to add brackets to the print above).
This is actually incredibly good design - your basic problem is that there is a problem - and you can find out more if you care to - and you can handle a given class of problem in a generalised manner.