初学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代码解析与知识点 在软件开发领域,版本控制系统如Subversion(SVN)扮演着至关重要的角色,它帮助开发者们管理源代码的修改历史,实现多人协作开发。然而,在某些场景下,例如将项目迁移至...
- 重新初始化:有时为了重新开始SVN管理,或者切换到其他分支,可能需要清除原有.svn文件。 4. **手动删除.svn文件**: - 使用Finder或Windows资源管理器,进入工程目录,查找并删除所有.svn文件夹。 - 使用...
2. 为何需要清除.SVN子目录: - 保存空间:.SVN目录包含了与版本控制相关的元数据,可能会占用一定磁盘空间,如果想释放这部分空间,可以考虑删除。 - 私密信息:在共享文件或发布代码时,.SVN目录可能包含敏感...
本文将深入探讨“python 文件实用包”所涵盖的四个主要功能:批量重命名、清除SVN相关文件、文件内容查找与替换以及按规则批量删除文件或目录。 1. 批量重命名: 在日常工作中,我们经常需要对大量文件进行重命名,...
描述中提到的"配置cs文件的删除路径"可能指的是使用一个批处理脚本或编程语言(如C#或Python)编写的配置文件。`cs`文件可能是C#代码文件,用于编写自动化删除操作。在这样的脚本中,你可以指定目标目录,然后遍历...
5. **自动清除工具**:可以编写脚本,比如bash、Python或批处理文件,遍历指定目录下的所有子目录,查找并删除.svn文件夹。 6. **注册表文件**:`.reg`文件用于导入或导出Windows注册表项,谨慎使用,因为它可以...
svn_diff_excel V1.0确保在这样的环境中稳定运行,消除了因系统位数不匹配带来的困扰。 在压缩包文件中,我们看到包含了一系列Python动态链接库(.pyd)和优化过的Python文件(.pyo)。这些文件可能包括了对Python...
标题中的“递归删除.svn”指的是在编程或文件管理操作中,如何使用递归方法来删除一个项目或目录下的所有.SVN子目录。.SVN是Subversion版本控制系统的一个隐藏目录,它存储了版本控制的相关信息。在某些情况下,用户...
4. **清除临时文件**:临时文件有时会干扰SVN的操作,脚本可以清理这些临时文件以排除干扰。 5. **处理冲突**:如果有未解决的冲突,脚本可以尝试自动合并或标记冲突文件以便后续手动处理。 6. **更新到最新版本**:...
例如,你可以用Python、Bash或者其他编程语言编写一个小程序来遍历目录并删除`.svn`目录。 4. **使用专门工具**: 有一些第三方工具,如`svn-cleaner`或`svn-delete-svn-control`,专门用于删除SVN元数据。这些工具...
PySVN是一款强大的Python库,用于与Subversion(SVN)版本控制系统进行交互。它提供了全面的API,使得Python开发者能够方便地执行诸如检查、更新、提交、合并等SVN操作。在Python2.5版本中,如果你在Win32环境下遇到...
对于 IP 配置的管理,可以使用 `iptables` 命令来设置防火墙规则,如 `iptables -L` 查看所有规则,`iptables -F` 清除所有规则。修改配置后,使用 `/etc/init.d/iptables save` 保存规则。 3. **JDK 安装与配置**...
该过程涉及到Python脚本的编写与执行、Unity项目的配置以及与版本控制系统(如SVN)的交互。 #### 二、工具链安装与配置 1. **Python安装** - 需要安装Python 2.7。 - 安装过程中确保勾选“Add Python to PATH”...
《Eric6:Python开发利器与汉化包详解》 ... Eric6的汉化版不仅消除了语言障碍,还通过其丰富的功能和友好的界面,为Python开发者提供了一个高效的开发环境。无论是初学者还是经验丰富的程序员,都能从中受益。
gVim集成了对Git、SVN等版本控制工具的支持,可以查看文件差异、提交、回退等。`:Gdiff`命令用于在Git仓库中比较文件差异。 **总结** gVim中文手册详细介绍了gVim的各项功能和操作,无论是初学者还是高级用户,都能...
内置SVN插件消除了外部安装和配置的麻烦,使得版本控制功能无缝融入到开发流程中。 其次,"基本插件都有"意味着Eclipse Mars 2预装了众多常用开发工具和插件。这些插件可能包括Java开发工具(JDT)、透视图管理器、...
PyDev还提供了一些实用工具,如代码分析和重构工具,帮助开发者改进代码结构和消除潜在问题。它的多视图界面使得同时查看和编辑多个文件变得轻松。此外,PyDev还支持自定义快捷键和工作流,可以根据个人习惯定制开发...
在【压缩包子文件的文件名称列表】"testlianliankan"中,我们可以推测这是项目的测试关卡或者资源文件,可能包含连连看的关卡数据、图片资源、音频文件等。这些资源通常会被cocos2d-x加载到游戏中,用于构建游戏界面...
- `make mrproper`:彻底清除所有构建文件和配置。 **4.2 理解何时需要完全重新构建** - 修改了工具链配置。 - 更新了内核版本或配置。 - 添加了新的软件包或对现有软件包进行了重大更改。 **4.3 如何重新构建...
它还支持插件系统,通过安装各种插件可以扩展其功能,如支持其他编程语言(如C++、Python等)、版本控制工具集成(如Git、SVN)以及项目管理工具等。 Eclipse的使用还包括工作空间(Workspace)的概念,这是一个...