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

Walter Wefft walterwefft at googlemail.com
Sun May 16 14:33:30 EDT 2010


Irmen de Jong wrote:
> 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
> 

def make_readable(fpath):
     '''
     On windows, this will make a read-only file readable.
     '''
     mode = os.stat(fpath)[stat.ST_MODE] | stat.S_IREAD | stat.S_IWRITE
     chmod(fpath, mode)




More information about the Python-list mailing list