Python实例之清除项目下SVN文件

发布时间:2020-01-15编辑:脚本学堂
本文介绍了python清除项目下svn文件的实现代码,python实例之清除项目中的svn文件,有需要的朋友参考下。

例子,用python清除项目下的svn文件。
主要是OS库等一些常用库的操作。

完整代码:
 

复制代码 代码示例:
#!/usr/bin/python
# www.jb200.com
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' 
     
fileDir = 'C:UsersAdministratorDesktopproject' 
clearSVN(fileDir)

您可能感兴趣的文章: