I can't delete a folder that I just extracted from a zip file in python
So here's my problem. I have a python script that takes a zipfile and extracts its contents. Then based on some constraint, I will try to delete the folder whose contents were just extracted. For some reason I get an error, WindowsError: [Error 5] Access is denied: 'Foldername' when i try to delete that folder. The simple code looks like the following
wzip = zipfile.ZipFile('zipfile.zip')
wzip.extractall()
wzip.close()
os.remove('ExtractedFolder')
If I run this in the interpreter I get the following:
Traceback (most recent call last): File "", line 1, in WindowsError: [Error 5] Access is denied: 'ExtractedFolder'
I'm using 开发者_如何学编程Python 2.6 on Windows Vista 32-bit and I'm kinda baffled as to why this might be happening.
Many reasons possible.
- You need to use
os.rmdir
to remove directories - You need to empty the folder
first - remember, the Windows command
rmdir
needs a/S
option to remove the contents, and Python probably uses that. - Is the unzip also using the archive's attributes? Read-only attributes may be applied.
- Are you reading anything from that folder, before you delete? You may not have closed it.
- Windows can cause similar problems with filenames containing unusual characters
I see a possible problem on Windows, which is that you could have an opened file in this directory. Make sure that you close explicitly all the files that you have opened using file.close()
(your sample code looks right, though).
Also, it might be useful to have a look at shutils.rmtree
: it can recursively remove directories, and capture errors.
精彩评论