Как пропустить каталоги .hg / .git / .svn при рекурсивном дереве в python - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть скрипт Python, который я собирал вместе (один из моих первых набегов Python).

Скрипт рекурсивно ищет папку с файлами проекта XCode; скрипт работает нормально, но я хотел бы адаптировать его для пропуска любых папок .svn (или .hg или .git), чтобы он не пытался изменять исходные репозитории.

Вот скрипт для рекурсивного поиска

for root, dirnames, files in os.walk('.'):
    files = [f for f in files if re.search("project\.pbxproj", f)]
    for f in files:
        filename = os.path.join(root, f)
        print "Adjusting BaseSDK for %s" % (filename)
        ...

Как я могу исключить поддеревья хранилища?

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

Как говорит С.Лотт в своем комментарии, это упоминается в документации для os.walk.Следующее должно работать нормально:

for root, dirs, files in os.walk("."):
    if ".hg" in dirs:
        dirs.remove(".hg")
    for f in files:
        print os.path.join(root, f)
0 голосов
/ 30 апреля 2011

Перед обработкой файла вы можете проверить, начинается ли первый символ в имени файла с «.», Если это так, перейти к следующему элементу в цикле.

for root, dirnames, files in os.walk('.'):
    files = [f for f in files if re.search("project\.pbxproj", f)]
    for f in files:
        ### EDIT START
        if f[0] == ".":
            continue
        ### EDIT FINISH

        filename = os.path.join(root, f)
        print "Adjusting BaseSDK for %s" % (filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...