`
wutheringsea
  • 浏览: 263247 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

[转] Python递归删除.svn文件夹

阅读更多

import os, stat;  
  
 root_dir = r'X:\XXX\XXX';  
  
def walk(path):  
     for item in os.listdir(path):  
         subpath = os.path.join(path, item);  
         mode = os.stat(subpath)[stat.ST_MODE];  
           
         if stat.S_ISDIR(mode):  
             if item==".svn":  
                 print "Clean %s ..." % subpath;  
                 print "%d deleted!" % purge(subpath);  
             else:  
                 walk(subpath);  
  
def purge(path):  
     count = 0;  
     for item in os.listdir(path):  
         subpath = os.path.join(path, item);  
         mode = os.stat(subpath)[stat.ST_MODE];  
         if stat.S_ISDIR(mode):  
             count += purge(subpath);  
         else:  
             os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE);  
             os.unlink(subpath);  
             count += 1;  
     os.rmdir(path);  
     count += 1;  
     return count;  
                        
       
  
if __name__=='__main__':  
     walk(root_dir);  
借鉴以上代码:

import os, stat;  
  
 root_dir = r'X:\XX\XX';  
  
  
def purge(path):  
     count = 0;  
     for item in os.listdir(path):  
         subpath = os.path.join(path, item);  
         mode = os.stat(subpath)[stat.ST_MODE];  
         if stat.S_ISDIR(mode):  
             count += purge(subpath);  
         else:  
             os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE);  
             os.unlink(subpath);  
             count += 1;  
     os.rmdir(path);  
     count += 1;  
     return count;  
  
  
  
def callback(arg, directory, files):  
     if os.path.split(directory)[1]=='.svn':  
         print directory;  
         #使用os.removedirs()删不掉   
        print "Folder [%s](%d files) deleted." % (directory, purge(directory));  
         print '--------------------';  
  
       
if __name__=='__main__':  
     print 'start';  
     os.path.walk(root_dir, callback, 0);  
     print 'complete.';  
第一种方法每次需要修改文件夹路径,进行了些修改

#!/usr/bin/python       
# -*- coding: utf8 -*-       
     
import sys, os, stat  
def walk(path):  
    for item in os.listdir(path):  
        subpath=os.path.join(path, item)  
        mode=os.stat(subpath)[stat.ST_MODE]  
        if stat.S_ISDIR(mode):  
            if item==".svn":  
                print "Cleaning %s ..." % subpath  
                print "%d deleted" % purge(subpath)  
            else:  
                walk(subpath)      
     
def purge(path):  
    count=0  
    for item in os.listdir(path):  
        subpath=os.path.join(path, item)  
        mode=os.stat(subpath)[stat.ST_MODE]  
        if stat.S_ISDIR(mode):  
            count+=purge(subpath)  
        else:  
            os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE)  
            os.unlink(subpath)  
            count+=1  
    os.rmdir(path)  
    count+=1  
    return count     
     
if len(sys.argv)!=2:  
    print "Usage: python SVNClean.py path"  
    sys.exit(1)      
     
walk(sys.argv[1])  
方法三:

#coding=utf-8   
import os  
import shutil  
import sys  
import stat  
  
def deleteSubFile(svnpath):  
    names = os.listdir(svnpath)  
    for name in names:  
          
        fp = os.path.join( svnpath, name)  
        if (os.path.isfile(fp)):  
            os.chmod( fp, stat.S_IWRITE)  
            os.remove(fp)  
        else:  
            deleteSubFile(fp)  
              
  
def deleteSVN(parentPath = None, dir = None):  
    if (dir != None and dir == '.svn'):  
        deleteSubFile(os.path.join( parentPath, dir))  
        shutil.rmtree(os.path.join( parentPath, dir), True, False)  
        print 'deleted ', os.path.join( parentPath, dir)  
    else:  
        if (dir != None):  
            filePath = os.path.join( parentPath, dir)  
        else:  
            filePath = parentPath  
        names = os.listdir(filePath)  
        for name in names:  
            fp = os.path.join( filePath, name)  
            if (os.path.isdir(fp)):  
                deleteSVN(filePath, name)  
  
  
if len(sys.argv) < 2:  
    print 'Usage: python % <file path>' % os.path.basename(sys.argv[0])  
    sys.exit(-1)  
  
if os.path.isfile(sys.argv[1]):  
    print '请选择文件夹, 而不是文件'  
else:  
    deleteSVN(parentPath = sys.argv[1])  
4行python代码,删除svn文件夹

import os  
for (p,d,f) in os.walk("要删除的目录路径"):  
    if p.find('.svn')>0:  
        os.popen('rd /s /q %s'%p)  

 

 

来源:http://www.linuxidc.com/Linux/2011-08/40716.htm

 

分享到:
评论

相关推荐

    删除.svn文件

    1. **手动删除**:打开文件资源管理器,找到包含.svn目录的工作副本,进入每个子目录,手动选中.svn文件夹并进行删除。但是这种方法耗时且容易出错,不推荐对大量文件使用。 2. **命令行删除**:如果你熟悉Windows...

    SVN清除.svn的python代码

    它利用Python的标准库以及Windows API来递归地遍历指定目录,查找并删除所有的`.svn`目录。该脚本首先通过用户输入获取目标目录,然后进行必要的路径清理,确保路径格式正确。接下来,它会询问用户是否确认删除操作...

    SVN版本控制清除工具

    - 这段代码会递归地遍历指定目录及其所有子目录,遇到.SVN目录时,先将其从待遍历的目录列表中移除,然后直接删除该目录。 4. 使用工具: - 提供的"RemoveSvnControl"可能是这样的一个小工具,它可以批量删除指定...

    Python实现递归遍历文件夹并删除文件

    如果文件夹名称不等于”.svn”,则递归上面的方法 Python的实现 代码 import os import shutil import os.path import stat rootdir=F:\\work\\Test for parent,dirnames,filenames in os.walk(rootdir): #遍历...

    python 文件实用包

    `nosvn.py`就是为此目的设计的,它可以递归地遍历整个目录结构,删除所有的`.svn`子目录,从而快速整理工作空间。 3. 文件内容查找与替换: 在处理大量文本文件时,可能需要查找并替换特定的字符串或模式。`listout...

    SVN使用手册中文版.chm

    目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 ...8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用

    SVN使用手册中文版快速入门

    1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 ...8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用

    Python实现SVN的目录周期性备份实例

    - **文件夹遍历**: 递归遍历源目录下的所有文件和子目录,以便完整备份。 - **周期性执行**: 可以通过操作系统自带的任务计划程序或者Python的第三方库如`schedule`来实现定时任务。 ##### 4. 核心代码分析 ```...

    文件及文件夹对比器源码源码demo

    - **递归对比**:如果文件夹包含子文件夹,需要递归地对比所有嵌套的文件和子文件夹。 3. **版本控制**: - **版本标识**:为每个文件或文件夹分配一个版本号,便于追踪历史记录。 - **版本差异记录**:保存每次...

    Python复制目录结构脚本代码分享

    在Python编程中,有时我们需要复制一个目录的结构,但不包括其中的文件。这在处理大量文件或层次复杂的目录时非常有用。本文将探讨如何使用Python编写一个脚本来实现这一功能,同时也会介绍一些基础的Python语法和...

    Pyhthon中使用compileall模块编译源文件为pyc文件

    这个时候就可以使用compileall 库来完成这个工作,它可以递归的把一个文件夹下的所有.py文件编译成.pyc文件。 例如我有一个django项目在test文件夹下就可以 复制代码 代码如下: E:\&gt;python -c “import compileall; ...

    Python复制文件操作实例详解

    假设我们要创建一个简单的自动化工具,该工具需要将debug目录下的配置文件复制到指定目录,并将Release目录下的生成文件复制到同一个目录,同时过滤掉不需要的文件夹(例如`.svn`),最后向指定目录添加几个特定的...

    编写Python小程序来统计测试脚本的关键字

    例如,`.svn`文件夹通常是版本控制系统所用,不应被包含在统计范围内。 3. **设置待检测文件类型**:根据项目的实际需求,可以指定只统计某些特定类型的文件。这里以`.rb`文件为例。 4. **定义关键字列表**:创建一...

    综测4.14.zip

    压缩包是将多个文件或文件夹打包成一个单一文件的过程,目的是减小文件总体积,提高存储和分享效率。常见的压缩格式有ZIP、RAR、7Z等。ZIP是最常用的格式之一,它支持多种文件压缩算法,且大多数操作系统和文件管理...

    第4次作业参考程序.rar

    RAR是一种流行的文件压缩格式,由WinRAR软件创建,它允许用户将多个文件和文件夹打包成一个单一的可下载单元,同时提供数据压缩以节省存储空间。在处理"参考程序"时,我们通常会期待找到源代码文件(如.C,.cpp,....

Global site tag (gtag.js) - Google Analytics