Найти свободное место на диске в python на OS / X

Я ищу количество бесплатных байтов на моем HD, но у меня проблемы с этим на python.

Я пробовал следующее:

import os stat = os.statvfs(path) print stat.f_bsize * stat.f_bavail 

Но на OS / X он дает мне 17529020874752 байт, что около 1,6 ТБ, что было бы очень приятно, но, к сожалению, это не так.

Каков наилучший способ добраться до этой цифры?

  • создание связанного размера легенды разметки matplotlib
  • Индексирование значений float в Python
  • Используя argparse для анализа аргументов формы "arg = val"
  • Tesseract OCR на AWS Lambda через virtualenv
  • Python - бесконечное выполнение
  • int ((0.1 + 0.7) * 10) = 7 на нескольких языках. Как предотвратить это?
  • Как использовать virtualenv с Python?
  • Веб-приложение висит в течение нескольких часов в ssl.py на self._sslobj.do_handshake ()
  • 7 Solutions collect form web for “Найти свободное место на диске в python на OS / X”

    Попробуйте использовать f_frsize вместо f_bsize .

     >>> s = os.statvfs('/') >>> (s.f_bavail * s.f_frsize) / 1024 23836592L >>> os.system('df -k /') Filesystem 1024-blocks Used Available Capacity Mounted on /dev/disk0s2 116884912 92792320 23836592 80% / 

    В UNIX:

     import os from collections import namedtuple _ntuple_diskusage = namedtuple('usage', 'total used free') def disk_usage(path): """Return disk usage statistics about the given path. Returned valus is a named tuple with attributes 'total', 'used' and 'free', which are the amount of total, used and free space, in bytes. """ st = os.statvfs(path) free = st.f_bavail * st.f_frsize total = st.f_blocks * st.f_frsize used = (st.f_blocks - st.f_bfree) * st.f_frsize return _ntuple_diskusage(total, used, free) 

    Применение:

     >>> disk_usage('/') usage(total=21378641920, used=7650934784, free=12641718272) >>> 

    Для Windows вы можете использовать psutil .

    В python 3.3 и выше shutil предоставляет вам ту же функцию

     >>> import shutil >>> shutil.disk_usage("/") usage(total=488008343552, used=202575314944, free=260620050432) >>> 

    Модуль Psutil также может использоваться.

     >>> psutil.disk_usage('/') usage(total=21378641920, used=4809781248, free=15482871808, percent=22.5) 

    документацию можно найти здесь .

     def FreeSpace(drive): """ Return the FreeSape of a shared drive in bytes""" try: fso = com.Dispatch("Scripting.FileSystemObject") drv = fso.GetDrive(drive) return drv.FreeSpace except: return 0 

    Это не зависит от ОС, но это работает на Linux и, возможно, на OS X:

    print commands.getoutput ('df.'). split ('\ n') [1] .split () [3]

    Как это работает? Он получает вывод «df». команда, которая дает вам информацию о диске, раздел которой является текущим каталогом, разделяет его на две строки (так же, как печатается на экране), затем берет вторую строку (добавив [1] после first split ()), затем разбивает эту строку на разные части, разделенные пробелами, и, наконец, дает вам 4-й элемент в этом списке.

     >>> commands.getoutput('df .') 'Filesystem 1K-blocks Used Available Use% Mounted on\n/dev/sda3 80416836 61324872 15039168 81% /' >>> commands.getoutput('df .').split('\n') ['Filesystem 1K-blocks Used Available Use% Mounted on', '/dev/sda3 80416836 61324908 15039132 81% /'] >>> commands.getoutput('df .').split('\n')[1] '/dev/sda3 80416836 61324908 15039132 81% /' >>> commands.getoutput('df .').split('\n')[1].split() ['/dev/sda3', '80416836', '61324912', '15039128', '81%', '/'] >>> commands.getoutput('df .').split('\n')[1].split()[3] '15039128' >>> print commands.getoutput('df .').split('\n')[1].split()[3] 15039128 

    Что случилось с

     import subprocess proc= subprocess.Popen( "df", stdout=subprocess.PIPE ) proc.stdout.read() proc.wait() 
    Interesting Posts

    Портирование Python во встроенную систему

    Сплит models.py в несколько файлов

    Python xlwt – доступ к существующему содержимому ячейки, автоматическая настройка ширины столбца

    scrapy, как отправить несколько запросов в форму

    OpenCV MSER обнаруживает текстовые области – Python

    Отправка данных из одного протокола в другой протокол в Twisted?

    Блокировка байтов (не строк) в Python 2 и 3

    Вычисление размера пикселя строки с помощью Python

    Odoo 9 Как создать действие на пользовательской кнопке

    Передача имени файла с апострофом в scp с использованием python

    Изменение элемента в одном списке изменяет несколько списков ..?

    Python: сплит-файлы с использованием разделителей с несколькими разделителями

    ImportError: нет модуля с именем PytQt5

    Matplotlib исчерпывает память при построении графика в цикле

    (unicode error) 'unicodeescape' кодек не может декодировать байты в позиции 2-3: усеченный \ UXXXXXXXX escape

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