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

一、受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: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值