recursively remove all the directories and files which begin with '.'

Irmen de Jong irmen-NOSPAM- at xs4all.nl
Sun May 16 13:59:21 EDT 2010


On 16-5-2010 19:41, Sean DiZazzo wrote:
> On May 14, 8:27 am, albert kao<albertk... at gmail.com>  wrote:
>> On May 14, 11:01 am, J<dreadpiratej... at gmail.com>  wrote:
>>
>>
>>
>>> On Fri, May 14, 2010 at 10:53, albert kao<albertk... at gmail.com>  wrote:
>>
>>>> C:\python>rmdir.py
>>>> C:\test\com.comp.hw.prod.proj.war\bin
>>>> ['.svn', 'com']
>>>> d .svn
>>>> dotd C:\test\com.comp.hw.prod.proj.war\bin\.svn
>>>> Traceback (most recent call last):
>>>>   File "C:\python\rmdir.py", line 14, in<module>
>>>>     rmtree(os.path.join(curdir, d))
>>>>   File "C:\Python31\lib\shutil.py", line 235, in rmtree
>>>>     onerror(os.remove, fullname, sys.exc_info())
>>>>   File "C:\Python31\lib\shutil.py", line 233, in rmtree
>>>>     os.remove(fullname)
>>>> WindowsError: [Error 5] Access is denied: 'C:\\test\
>>>> \com.comp.hw.prod.proj.war\\bin\\.svn\\entries'
>>
>>>> --
>>>> http://mail.python.org/mailman/listinfo/python-list
>>
>>> You don't have permissions to remove the subdir or file entries in the
>>> .svn directory...
>>
>>> Maybe that file is still open, or still has a lock attached to it?
>>
>> I reboot my windows computer and run this script as administrator.
>> Do my script has a bug?
>
> Are the directory or files marked as read only?
>
> See this recipe and the comment from Chad Stryker:
>
> http://code.activestate.com/recipes/193736-clean-up-a-directory-tree/
>
> "Although it is true you can use shutil.rmtree() in many cases, there
> are some cases where it does not work. For example, files that are
> marked read-only under Windows cannot be deleted by shutil.rmtree().
> By importing the win32api and win32con modules from PyWin32 and adding
> line like "win32api.SetFileAttributes(path,
> win32con.FILE_ATTRIBUTE_NORMAL" to the rmgeneric() function, this
> obstacle can be overcome."
>
> It might not be your problem, but if it is, this had me stumped for a
> few weeks before I found this comment!
>
> ~Sean

You should be able to do this with os.chmod as well (no extra modules 
required). I'm not sure what the mode should be though. Perhaps 0777 
does the trick.

-irmen




More information about the Python-list mailing list