Ответ 1
Попробуйте следующее:
for root, subFolders, files in os.walk(rootdir):
if '.svn' in subFolders:
subFolders.remove('.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"
Попробуйте следующее:
for root, subFolders, files in os.walk(rootdir):
if '.svn' in subFolders:
subFolders.remove('.svn')
И затем продолжите обработку.
Когда значение "Понижение" равно "Истина", вызывающий может изменить список имен dirnames на месте (возможно, используя назначение del или slice), и walk() будет только возвращаться в подкаталоги, имена которых остаются в dirnames; это можно использовать для обрезки поиска, введения определенного порядка посещения или даже для информирования walk() о каталогах, которые вызывающий создает или переименовывает, прежде чем он снова возобновит walk().
for root, subFolders, files in os.walk(rootdir):
try:
subFolders.remove('.svn')
except ValueError:
pass
dosomestuff()