我有一个脚本,我想用它来改变整个项目文件夹结构中的重复字符串。一旦更改,我可以检查到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"
答案 0 :(得分:30)
试试这个:
for root, subFolders, files in os.walk(rootdir):
if '.svn' in subFolders:
subFolders.remove('.svn')
然后继续处理。
答案 1 :(得分:8)
当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中;这可以用来修剪搜索,强制执行特定的访问顺序,甚至可以告诉walk()有关调用者在再次恢复walk()之前创建或重命名的目录。
for root, subFolders, files in os.walk(rootdir):
try:
subFolders.remove('.svn')
except ValueError:
pass
dosomestuff()