В Python, как я могу получить файловую систему с заданным путем к файлу - PullRequest
3 голосов
/ 19 августа 2011

В python, учитывая каталог или путь к файлу, например / usr / local, мне нужно получить файловую систему там, где она доступна.В некоторых системах это может быть / (root), а в других - /usr.

Я пробовал os.statvfs, это не помогает.Нужно ли запускать команду df с именем пути и извлекать файловую систему из выходных данных?Есть ли лучшее решение?

Это только для Linux / Unix платформ.

Спасибо

Ответы [ 3 ]

6 голосов
/ 19 августа 2011

Вот слегка измененная версия найденного рецепта здесь . os.path.realpath добавлено, поэтому символические ссылки обрабатываются правильно.

import os
def getmount(path):        
    path = os.path.realpath(os.path.abspath(path))
    while path != os.path.sep:
        if os.path.ismount(path):
            return path
        path = os.path.abspath(os.path.join(path, os.pardir))
    return path
4 голосов
/ 19 августа 2011

Используйте os.stat, чтобы получить номер устройства рассматриваемого файла / каталога (поле st_dev), а затем выполните итерации системных монтирований (/etc/mtab или /proc/mounts), сравнивая st_dev каждой точки подключения с этот номер.

2 голосов
/ 19 августа 2011

Поскольку df сам открывается и анализирует /etc/mtab, вы можете либо пойти по этому пути и также проанализировать этот файл (альтернативой будет /proc/mounts), либо вы действительно анализируете вывод df.

...