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