Есть ли способ определить, находится ли подкаталог в той же файловой системе из python при использовании os.walk? - PullRequest
3 голосов
/ 10 февраля 2009

Я пишу скрипт на python, который использует os.walk () для обхода дерева каталогов. Я хотел бы дать ему возможность пропустить подкаталоги, которые смонтированы в другой файловой системе, как это делает find -xdev. Просматривая документацию по os.walk (), я не увидел ни одного аргумента для его автоматического выполнения. Есть ли что-то, что я могу использовать для фильтрации? Надеемся, что-нибудь, что работает как на Linux, так и на Mac OS X?

Ответы [ 2 ]

6 голосов
/ 10 февраля 2009
1 голос
/ 10 февраля 2009

Я думаю, что вы можете использовать комбинацию вызова os.stat и фильтрацию каталогов, заданных os.walk, чтобы делать то, что вы хотите. Примерно так:

import os
for root, dirs, files in os.walk(somerootdir) :
    do_processing(root, dirs, files)
    dirs = [i for i in dirs if os.stat(os.path.join(root, i)).st_dev == os.stat(root).st_dev]

Это должно изменить список каталогов, в которые нужно перейти, удалив те, которые не имеют того же устройства.

Я понятия не имею, как он будет работать на OS X, но, похоже, он работает здесь, в Linux, после небольшого тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...