Подтвердить что ты не робот

Исключить .svn папки.

Я получил script, который я хочу использовать для изменения повторяющейся строки в структуре папок проекта. После изменения я могу проверить это на SVN. Однако, когда я запускаю свой script, он переходит в папки .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"
4b9b3361

Ответ 1

Попробуйте следующее:

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

И затем продолжите обработку.

Ответ 2

Err... что?

Когда значение "Понижение" равно "Истина", вызывающий может изменить список имен dirnames на месте (возможно, используя назначение del или slice), и walk() будет только возвращаться в подкаталоги, имена которых остаются в dirnames; это можно использовать для обрезки поиска, введения определенного порядка посещения или даже для информирования walk() о каталогах, которые вызывающий создает или переименовывает, прежде чем он снова возобновит walk().

for root, subFolders, files in os.walk(rootdir):
  try:
    subFolders.remove('.svn')
  except ValueError:
    pass
  dosomestuff()