Re: Read-only error
Chris Angelico via Python-list <[email protected]> Tue, 14 Jul 2026 02:36:26 +1000
| Newsgroups | gmane.comp.python.general |
|---|---|
| Message-ID | <CAPTjJmp1ap8L_A=gtuuEeJxa3JX_=G5r9X8T9QkdTaM7Fh7FTg@mail.gmail.com> |
On Tue, 14 Jul 2026 at 02:25, Rob Cliffe via Python-list <[email protected]> wrote: > It seems to me to be useful to distinguish between > cases where the attempt fails because the file is owned by someone else > the case where the attempt only fails because the file is read-only. > We already have a FileExistsError subclass of OSError, which AIUI allows > you to distinguish > between the cases where trying to create an file (say) > fails because the file already exists > fails because you do not have permission to write to the parent > directory. > This distinction is useful information. The question is, HOW do you distinguish? FileExistsError is not a variant form of PermissionsError; it, as per the documentation, corresponds to the EEXIST error return. OSError subclasses tell you about different errno values. Prior to FileNotFoundError's introduction in Python 3.3 (along with a number of others), the way to recognize that a file wasn't found was: except OSError as e: if e.errno != errno.ENOENT: raise # it's "File Not Found", proceed accordingly This is very different from what you're asking for, which is a separate and independent check, and introduces TOCTOU issues. > In the same way, surely it is useful to have more information > about why trying to delete a file failed. Only if the OS provides it. > I was talking about a read-only file, not a read-only directory. > That may be another ball game - one I haven't thought about. > (I wasn's suggesting a DirectoryReadOnly Exception, though there might > be some merit in the idea.) Yes, and on Linux, a read-only file can be removed without error. So the distinction is important. That's why the error is simply "you aren't allowed to do that", without trying to crystal-ball the reason for that. > You jest of course. My point was that such logic may be written not > just by me, > but by many others. Reinventing the wheel. I'm unconvinced that it is, though. I've never implemented that logic, and among those who have, I think you'll find that there are subtly different variations for different situations. You're specifically wanting to check the *file's* permissions, not its containing directory, and not whether the file system *as a whole* is read only. That's correct for your situation, but not for everyone's. ChrisA