os.walk 排除 .svn 文件夹
我有一个脚本,想用它来在整个项目文件夹中更改一个重复的字符串。修改完成后,我可以把它提交到SVN(一个版本控制工具)。但是当我运行这个脚本时,它会进入到.svn文件夹里,而我希望它能忽略这些文件夹。我该怎么做呢?下面是我的代码,谢谢。
import os
import sys
replacement = "newString"
toReplace = "oldString"
rootdir = "pathToProject"
for root, subFolders, files in os.walk(rootdir):
print subFolders
if not ".svn" in subFolders:
for file in files:
fileParts = file.split('.')
if len(fileParts) > 1:
if not fileParts[len(fileParts)-1] in ["dll", "suo"]:
fpath = os.path.join(root, file)
with open(fpath) as f:
s = f.read()
s = s.replace(toReplace, replacement)
with open(fpath, "w") as f:
f.write(s)
print "DONE"
2 个回答
8
当topdown设置为True时,调用者可以直接修改dirnames这个列表(比如使用删除或者切片赋值),这样walk()函数只会进入那些名字仍然在dirnames里的子目录。这可以用来减少搜索的范围,规定访问的顺序,甚至可以告诉walk()关于调用者在继续执行walk()之前创建或重命名的目录。
for root, subFolders, files in os.walk(rootdir):
try:
subFolders.remove('.svn')
except ValueError:
pass
dosomestuff()
31
试试这个:
for root, subFolders, files in os.walk(rootdir):
if '.svn' in subFolders:
subFolders.remove('.svn')
然后继续处理后面的内容。