2008年12月17日星期三

去读文件的只读属性

在Windows下要删除只读文件会弹出一个提示文件为只读,是否确定要删除之类的消息框,用Python删除文件时碰到只读属性则会删除失败,解决的办法就是把文件的只读属性去掉再删除。
1. 调用DOS命令
import os
os.system('attrib -R %s' %filename)
os.remove(filename)
这种方法在带UI的程序中会弹出一个cmd窗口,随即又消失,影响用户体验。

2. stat模块
import os
import stat
os.chmod(filename, stat.S_IWRITE)
os.remove(filename)

如果要删除整个文件夹,而其中包含有只读文件,那就先将文件夹下所有文件的只读属性去掉再删除。

import os
import stat
import shutil

def _remove_readonly(filename):
    os.chmod(filename, stat.S_IWRITE)

def rmdir(dir):
    # if there're sub-directories under 'dir', the following line need some modification
    map(_remove_readonly, [os.path.join(dir, filename) for file in os.listdir(dir)])
    shutil.rmtree(dir)

没有评论: