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

В Unix все диски отображаются как пути в основной файловой системе, поэтому os.walk('/') будет проходить, например, /media/cdrom а также основной жесткий диск, что нежелательно для некоторых приложений.

Как получить os.walk который остается на одном устройстве?

Связанный:

  • Есть ли способ определить, находится ли подкаталог в одной файловой системе из python при использовании os.walk?

3 Solutions collect form web for “Как я могу запретить пропуску Python входить через точки монтирования?”

Из документов os.walk :

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

Итак, что-то вроде этого должно работать:

 for root, dirnames, filenames in os.walk(...): dirnames[:] = [ dir for dir in dirnames if not os.path.ismount(os.path.join(root, dir))] ... 

Я думаю, что os.path.ismount может сработать для вас. Код может выглядеть примерно так:

 import os import os.path for root, dirs, files in os.walk('/'): # Handle files. dirs[:] = filter(lambda dir: not os.path.ismount(os.path.join(root, dir)), dirs) 

Вы также можете найти этот ответ полезным при создании своего решения.

* Спасибо за комментарии по фильтрации dirs правильно.

os.walk() не может сказать (насколько мне известно), что он просматривает другой диск. Вам нужно будет убедиться в этом сами.

Попробуйте использовать os.stat() или os.stat() , что корневая переменная из os.walk() не является /media

Python - лучший язык программирования в мире.