os.walk排除.svn文件夹

时间:2010-11-25 10:58:32

标签: python

我有一个脚本,我想用它来改变整个项目文件夹结构中的重复字符串。一旦更改,我可以检查到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 个答案:

答案 0 :(得分:30)

试试这个:

for root, subFolders, files in os.walk(rootdir):
    if '.svn' in subFolders:
      subFolders.remove('.svn')

然后继续处理。

答案 1 :(得分:8)

Err... what?

  

当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()