一、受SVN控制的目录结构示例:
SVNCleaner:
|- .svn
|- (源码文件)
|- src
|—-|- .svn
|—-|- (源码文件)
需要删除的是所有.svn目录及里面所有文件;
二、可能会碰到的问题
1、 目录权限问题:
在windows系统删除(win7)会碰到如下错误:
WindowsError: [Error 5] Access is denied
解决方案:
用 os.chmod(path, mode) 方法先进行权限提升
例:
#!/usr/bin/python
import os, sys, stat # Assuming /tmp/foo.txt exists, Set a file execute by the group. os.chmod("/tmp/foo.txt", stat.S_IXGRP) # Set a file write by others. os.chmod("/tmp/foo.txt", stat.S_IWOTH) print "Changed mode successfully!!
详见:http://www.tutorialspoint.com/python/os_chmod.htm
三、CODE:(完整源码)
# !/usr/bin/python
#coding=utf-8 #author onebody # http://fcjblog.com http://blog.youkuaiyun.com/fcjblog
#http://hi.baidu.com/onebody83 http://weibo.com/hdxj http://t.qq.com/onebody # QQ:4308451 import os import stat class SVNCleaner():# 主程序 删除指定目录下的 .svn 文件夹 rootdir = r"E:\grouwinshop_cms" # 需要处理的文件夹 rootdir = unicode(rootdir, "utf8") def run(self): self.delSvnDir(self.rootdir) def delSvnDir(self, svnDir): for parent, dirnames, filenames in os.walk(svnDir): #目录处理 递归处理 for dirname in dirnames: if dirname.find(".svn") >= 0: self.delFileFolder(os.path.join(svnDir, dirname)) else: self.delSvnDir(os.path.join(svnDir, dirname)) ##删除些文件夹下所有文件和目录 def delFileFolder(self, srcDir): if os.path.isfile(srcDir): try: #更改权限(win7会出现权限问题) os.chmod(srcDir, stat.S_IREAD | stat.S_IWRITE) os.remove(srcDir) except: pass elif os.path.isdir(srcDir): for item in os.listdir(srcDir): itemsrc = os.path.join(srcDir, item) self.delFileFolder(itemsrc) try: #更改权限(win7会出现权限问题) os.chmod(srcDir, stat.S_IREAD | stat.S_IWRITE) os.rmdir(srcDir) except: pass #主程序执行# svnCleaner = SVNCleaner() svnCleaner.run()
链接:http://fcjblog.com/pytho-boredom-for-remove-svn-files-in-the-specified-directory