causes of Python IOError: [Errno 13] Permission de

2019-09-20 13:57发布

问题:

When attempting to write a file, I can get this same error when any of following conditions applies:

  1. The file exists and is marked read-only.

  2. I don't have write permission for the folder and therefore cannot create a file.

  3. 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.

回答1:

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.