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
分享到:
相关推荐
1. **手动删除**:打开文件资源管理器,找到包含.svn目录的工作副本,进入每个子目录,手动选中.svn文件夹并进行删除。但是这种方法耗时且容易出错,不推荐对大量文件使用。 2. **命令行删除**:如果你熟悉Windows...
它利用Python的标准库以及Windows API来递归地遍历指定目录,查找并删除所有的`.svn`目录。该脚本首先通过用户输入获取目标目录,然后进行必要的路径清理,确保路径格式正确。接下来,它会询问用户是否确认删除操作...
- 这段代码会递归地遍历指定目录及其所有子目录,遇到.SVN目录时,先将其从待遍历的目录列表中移除,然后直接删除该目录。 4. 使用工具: - 提供的"RemoveSvnControl"可能是这样的一个小工具,它可以批量删除指定...
如果文件夹名称不等于”.svn”,则递归上面的方法 Python的实现 代码 import os import shutil import os.path import stat rootdir=F:\\work\\Test for parent,dirnames,filenames in os.walk(rootdir): #遍历...
`nosvn.py`就是为此目的设计的,它可以递归地遍历整个目录结构,删除所有的`.svn`子目录,从而快速整理工作空间。 3. 文件内容查找与替换: 在处理大量文本文件时,可能需要查找并替换特定的字符串或模式。`listout...
目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 ...8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用
1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 ...8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用
- **文件夹遍历**: 递归遍历源目录下的所有文件和子目录,以便完整备份。 - **周期性执行**: 可以通过操作系统自带的任务计划程序或者Python的第三方库如`schedule`来实现定时任务。 ##### 4. 核心代码分析 ```...
- **递归对比**:如果文件夹包含子文件夹,需要递归地对比所有嵌套的文件和子文件夹。 3. **版本控制**: - **版本标识**:为每个文件或文件夹分配一个版本号,便于追踪历史记录。 - **版本差异记录**:保存每次...
在Python编程中,有时我们需要复制一个目录的结构,但不包括其中的文件。这在处理大量文件或层次复杂的目录时非常有用。本文将探讨如何使用Python编写一个脚本来实现这一功能,同时也会介绍一些基础的Python语法和...
这个时候就可以使用compileall 库来完成这个工作,它可以递归的把一个文件夹下的所有.py文件编译成.pyc文件。 例如我有一个django项目在test文件夹下就可以 复制代码 代码如下: E:\>python -c “import compileall; ...
假设我们要创建一个简单的自动化工具,该工具需要将debug目录下的配置文件复制到指定目录,并将Release目录下的生成文件复制到同一个目录,同时过滤掉不需要的文件夹(例如`.svn`),最后向指定目录添加几个特定的...
例如,`.svn`文件夹通常是版本控制系统所用,不应被包含在统计范围内。 3. **设置待检测文件类型**:根据项目的实际需求,可以指定只统计某些特定类型的文件。这里以`.rb`文件为例。 4. **定义关键字列表**:创建一...
压缩包是将多个文件或文件夹打包成一个单一文件的过程,目的是减小文件总体积,提高存储和分享效率。常见的压缩格式有ZIP、RAR、7Z等。ZIP是最常用的格式之一,它支持多种文件压缩算法,且大多数操作系统和文件管理...
RAR是一种流行的文件压缩格式,由WinRAR软件创建,它允许用户将多个文件和文件夹打包成一个单一的可下载单元,同时提供数据压缩以节省存储空间。在处理"参考程序"时,我们通常会期待找到源代码文件(如.C,.cpp,....