当前位置: > Linux服务器 > SVN >

Python清除SVN文件示例代码

时间:2014-09-15 03:17来源:linux.it.net.cn 作者:it

为熟悉python文件相关操作,写了一个简单清除项目下svn文件功能的代码。

例子,python清除svn文件的代码。
 

复制代码代码示例:
import os  
import time  
import stat  
  
def clearSVN(destPath):  
    if os.path.isdir(destPath) == False :  
        return;  
    else :  
        destFileName = os.path.basename(destPath)  
        print 'current dir name is %s' %destFileName  
        if str(destFileName).find('svn') == -1 :  
            print '%s is not svn file' %destFileName  
            for fDir in os.listdir(destPath) :  
                clearSVN(os.path.join(destPath, fDir))  
        else :  
            print '%s is svn file' %destFileName  
            os.chmod(destPath, stat.S_IMODE(os.stat(destPath)[stat.ST_MODE]) | stat.S_IREAD|stat.S_IWRITE)  
            for root, dirs, files in os.walk(destPath, topdown=False):  
                for fileN in files:  
                    try :  
                        f = os.path.join(root, fileN);  
                        os.chmod(f, stat.S_IMODE(os.stat(f)[stat.ST_MODE]) | stat.S_IREAD|stat.S_IWRITE)  
                        os.remove(f)  
                    except OSError as e:  
                        print f + 'remove error' + e.message  
                    finally :  
                        if os.path.exists(f) :  
                            os.system('del ' + f + ' /f /q')  
                for dirN in dirs:  
                    print 'dirName is %s' %dirN  
                try :  
                    print 'root is %s' %root  
                    os.chmod(root, stat.S_IMODE(os.stat(root)[stat.ST_MODE]) | stat.S_IREAD|stat.S_IWRITE)  
                    os.rmdir(root)  
                except OSError as e:  
                    print root + 'remove error' + e.message  
                finally :  
                    if os.path.exists(root) :  
                        os.system('del ' + root + ' /f /q')  
                  
def search(destPath, destFile):  
    if os.path.isdir(destPath) == False or os.path.isfile(destFile) == False :  
        return  
    for destF in os.listdir(destPath):  
        if os.path.isfile(destF) and destF == os.path.basename(destFile) :  
            return os.path.join(destPath, destF)  
        elif os.path.isdir(destF) :  
            search(os.path.join(destPath, destF), destFile)  
        else :  
            print 'can not find file %s' %destFile  
            return None  
          
def iteratorHandle(srcPath, destPath, isNew = False):  
    if os.path.isfile(srcPath) :  
        destFile = search(destPath, srcPath)  
        if destFile == None :  
            if isNew == False :  
                if os.path.isfile(srcPath) :  
                    try :  
                        os.chmod(srcPath, stat.S_IMODE(os.stat(srcPath)[stat.ST_MODE]) | stat.S_IREAD|stat.S_IWRITE)  
                        os.remove(srcPath)  
                    finally :  
                        os.system('del ' + srcPath + ' /F')  
            else :  
                print 'new file to add'  
        else :  
            newFileMT = time.localtime(os.stat(destFile).st_mtime)  
            oldFileMT = time.localtime(os.stat(srcPath).st_mtime)  
            if time.mktime(newFileMT) - time.mktime(oldFileMT) > 0 :  
                oldFileDir = str(srcPath)[0:str(srcPath).rfind(os.path.sep)]  
                oldFileName = os.path.basename(srcPath)  
                oldFilenewName = str(srcPath)[0 : str(srcPath).rfind('.')] + '_backup' + str(srcPath)[str(srcPath).rfind('.') : ]  
                os.rename(srcPath, os.path.join(oldFileDir, oldFilenewName))  
                open(os.path.join(oldFileDir, oldFileName), "wb").write(open(destFile, "rb").read())  
    elif os.path.isdir(srcPath) :   
        for destFile in os.listdir(srcPath) :  
            iteratorHandle(os.path.join(srcPath, destFile))  
    else :  
        print 'iterator handle error'  
          
def handle(srcPath, destPath):  
    if os.path.isdir(srcPath) == False or os.path.isdir(destPath):  
        return  
    clearSVN(srcPath)  
    clearSVN(destPath)  
      
fileDir = 'C:\\Users\\Administrator\\Desktop\\project'  
clearSVN(fileDir) 
(责任编辑:IT)
------分隔线----------------------------