Как я могу запретить пропуску 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?
  • Ansible: лучшая практика для поддержания списка судеров
  • Захват статуса выхода процесса Python в оболочке UNIX
  • Изменение пароля Unix из командной строки поверх Python / Fabric
  • Проверка запуска скрипта python в скрипте python
  • Вывод трубы из командной строки в сценарий python
  • Использование абсолютных путей unix в windows с python
  • эффективно разбивать один файл на несколько файлов по значению столбца
  • У всех новых каталогов есть 777 разрешений
  • как использовать «/» (разделитель каталогов) в Linux и Windows?
  • Нужна пошаговая клавиатура, которая хорошо взаимодействует с пастой и escape-последовательностями ANSI
  • Python - лучший язык программирования в мире.