`
fighting_2013
  • 浏览: 15737 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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)
分享到:
评论

相关推荐

    SVN清除.svn的python代码

    ### SVN清除.svn的Python代码解析与知识点 在软件开发领域,版本控制系统如Subversion(SVN)扮演着至关重要的角色,它帮助开发者们管理源代码的修改历史,实现多人协作开发。然而,在某些场景下,例如将项目迁移至...

    如何删除SVN连接,即工程下的所有.svn文件

    - 重新初始化:有时为了重新开始SVN管理,或者切换到其他分支,可能需要清除原有.svn文件。 4. **手动删除.svn文件**: - 使用Finder或Windows资源管理器,进入工程目录,查找并删除所有.svn文件夹。 - 使用...

    SVN版本控制清除工具

    2. 为何需要清除.SVN子目录: - 保存空间:.SVN目录包含了与版本控制相关的元数据,可能会占用一定磁盘空间,如果想释放这部分空间,可以考虑删除。 - 私密信息:在共享文件或发布代码时,.SVN目录可能包含敏感...

    python 文件实用包

    本文将深入探讨“python 文件实用包”所涵盖的四个主要功能:批量重命名、清除SVN相关文件、文件内容查找与替换以及按规则批量删除文件或目录。 1. 批量重命名: 在日常工作中,我们经常需要对大量文件进行重命名,...

    删除目录下所有svn相关的文件夹

    描述中提到的"配置cs文件的删除路径"可能指的是使用一个批处理脚本或编程语言(如C#或Python)编写的配置文件。`cs`文件可能是C#代码文件,用于编写自动化删除操作。在这样的脚本中,你可以指定目标目录,然后遍历...

    清除.svn文件夹

    5. **自动清除工具**:可以编写脚本,比如bash、Python或批处理文件,遍历指定目录下的所有子目录,查找并删除.svn文件夹。 6. **注册表文件**:`.reg`文件用于导入或导出Windows注册表项,谨慎使用,因为它可以...

    svn_diff_excel V1.0

    svn_diff_excel V1.0确保在这样的环境中稳定运行,消除了因系统位数不匹配带来的困扰。 在压缩包文件中,我们看到包含了一系列Python动态链接库(.pyd)和优化过的Python文件(.pyo)。这些文件可能包括了对Python...

    递归删除.svn

    标题中的“递归删除.svn”指的是在编程或文件管理操作中,如何使用递归方法来删除一个项目或目录下的所有.SVN子目录。.SVN是Subversion版本控制系统的一个隐藏目录,它存储了版本控制的相关信息。在某些情况下,用户...

    win10下SVN客户端执行Cleanup也不能成功,解决问题包

    4. **清除临时文件**:临时文件有时会干扰SVN的操作,脚本可以清理这些临时文件以排除干扰。 5. **处理冲突**:如果有未解决的冲突,脚本可以尝试自动合并或标记冲突文件以便后续手动处理。 6. **更新到最新版本**:...

    删除svn信息

    例如,你可以用Python、Bash或者其他编程语言编写一个小程序来遍历目录并删除`.svn`目录。 4. **使用专门工具**: 有一些第三方工具,如`svn-cleaner`或`svn-delete-svn-control`,专门用于删除SVN元数据。这些工具...

    PySVN for python2.5 win32

    PySVN是一款强大的Python库,用于与Subversion(SVN)版本控制系统进行交互。它提供了全面的API,使得Python开发者能够方便地执行诸如检查、更新、提交、合并等SVN操作。在Python2.5版本中,如果你在Win32环境下遇到...

    svn服务,excel数据库导入,tomcat相关.pdf

    对于 IP 配置的管理,可以使用 `iptables` 命令来设置防火墙规则,如 `iptables -L` 查看所有规则,`iptables -F` 清除所有规则。修改配置后,使用 `/etc/init.d/iptables save` 保存规则。 3. **JDK 安装与配置**...

    生成数据说明文档1

    该过程涉及到Python脚本的编写与执行、Unity项目的配置以及与版本控制系统(如SVN)的交互。 #### 二、工具链安装与配置 1. **Python安装** - 需要安装Python 2.7。 - 安装过程中确保勾选“Add Python to PATH”...

    eric6-19.9.zip

    《Eric6:Python开发利器与汉化包详解》 ... Eric6的汉化版不仅消除了语言障碍,还通过其丰富的功能和友好的界面,为Python开发者提供了一个高效的开发环境。无论是初学者还是经验丰富的程序员,都能从中受益。

    gVim中文手册

    gVim集成了对Git、SVN等版本控制工具的支持,可以查看文件差异、提交、回退等。`:Gdiff`命令用于在Git仓库中比较文件差异。 **总结** gVim中文手册详细介绍了gVim的各项功能和操作,无论是初学者还是高级用户,都能...

    eclipse_mars2.rar

    内置SVN插件消除了外部安装和配置的麻烦,使得版本控制功能无缝融入到开发流程中。 其次,"基本插件都有"意味着Eclipse Mars 2预装了众多常用开发工具和插件。这些插件可能包括Java开发工具(JDT)、透视图管理器、...

    pydev

    PyDev还提供了一些实用工具,如代码分析和重构工具,帮助开发者改进代码结构和消除潜在问题。它的多视图界面使得同时查看和编辑多个文件变得轻松。此外,PyDev还支持自定义快捷键和工作流,可以根据个人习惯定制开发...

    cocos2d+vs2010【梦幻连连连】

    在【压缩包子文件的文件名称列表】"testlianliankan"中,我们可以推测这是项目的测试关卡或者资源文件,可能包含连连看的关卡数据、图片资源、音频文件等。这些资源通常会被cocos2d-x加载到游戏中,用于构建游戏界面...

    Buildroot的用户手册

    - `make mrproper`:彻底清除所有构建文件和配置。 **4.2 理解何时需要完全重新构建** - 修改了工具链配置。 - 更新了内核版本或配置。 - 添加了新的软件包或对现有软件包进行了重大更改。 **4.3 如何重新构建...

    Eclipse使用入门教程

    它还支持插件系统,通过安装各种插件可以扩展其功能,如支持其他编程语言(如C++、Python等)、版本控制工具集成(如Git、SVN)以及项目管理工具等。 Eclipse的使用还包括工作空间(Workspace)的概念,这是一个...

Global site tag (gtag.js) - Google Analytics