为熟悉python文件相关操作,写了一个简单清除项目下svn文件功能的代码。
例子,python清除svn文件的代码。
复制代码代码示例:
import os
(责任编辑:IT)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) |