【python】无聊之作:删除指定目录下的SVN文件

来源:互联网 发布:心动网络'有员工宿舍么 编辑:程序博客网 时间:2024/04/28 08:40

一、受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.csdn.net/fcjblog
#http://hi.baidu.com/onebody83 http://weibo.com/hdxj http://t.qq.com/onebody# QQ:4308451import osimport statclass 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:passelif 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

原创粉丝点击