This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Incorrect Python errors when using os.remove to delete a directory
- From: Adam Dinwoodie <adam at dinwoodie dot org>
- To: cygwin at cygwin dot com
- Date: Fri, 27 Nov 2015 14:51:05 +0000
- Subject: Incorrect Python errors when using os.remove to delete a directory
- Authentication-results: sourceware.org; auth=none
If I use os.remove in Python to remove a directory, I expect it to fail
with an OSError on Python2 or a IsADirectoryError on Python3. On
Python2, I get OSError, but with the wrong error code, whereas on
Python3 I get completely the wrong exception.
Simple testcases:
$ rm -rf testdir && mkdir testdir && python -c 'import os; os.remove("testdir")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 1] Operation not permitted: 'testdir'
$ rm -rf testdir && mkdir testdir && python3 -c 'import os; os.remove("testdir")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
PermissionError: [Errno 1] Operation not permitted: 'testdir'
On my handy CentOS box, I see the following instead:
$ rm -rf testdir && mkdir testdir && python -c 'import os; os.remove("testdir")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 21] Is a directory: 'testdir'
$ rm -rf testdir && mkdir testdir && python3 -c 'import os; os.remove("testdir")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: 'testdir'
Now I've realised what's going wrong I can work around it, but it'd be
nice if the correct error were raised in the first place.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple