Как узнать размер файла python

Обновлено: 21.11.2024

Файл — это набор различных данных, хранящихся в одном блоке. Размер файла оценивает, сколько места файл займет для хранения на носителе данных, таком как жесткий диск. Его можно измерять в различных единицах памяти, таких как килобайты (КБ), мегабайты (МБ), гигабайты (ГБ) и т. д.

В этой статье будут представлены различные методы проверки размера файла в Python.

Проверка размера файла в Python с помощью модуля pathlib

Метод stat() объекта Path возвращает подробные свойства файла, такие как st_mode , st_dev и т. д. Атрибут st_size метода stat указывает размер файла в байтах.

Полный код примера выглядит следующим образом:

Мы должны поместить r перед созданием пути к файлу в виде необработанной строки; в противном случае нам нужно экранировать обратную косую черту, например C:\\test\\file1.txt .

Проверка размера файла в Python с помощью метода os.path()

В этом модуле Python os.path есть функция getsize, которая возвращает размер файла в байтах, принимая путь к файлу в качестве аргумента.

Полный код примера выглядит следующим образом:

Проверка размера файла в Python с помощью метода os.stat

Этот модуль ОС Python также предоставляет метод статистики для проверки размера файла. Он также принимает путь к файлу в качестве аргумента и возвращает объект типа структуры. Этот объект имеет атрибут st_size, указывающий размер файла в байтах.

Полный код примера выглядит следующим образом:

Проверка размера файла с помощью метода файлового объекта в Python

Мы передаем путь к файлу функции open() и получаем файловый объект, который можно использовать для операций с файлами.

Полный код примера выглядит следующим образом:

После открытия нужного файла курсор файла находится в начале файла. Метод seek файлового объекта установит файловый курсор в нужное положение.

Первый аргумент метода seek() — это смещение объекта File, а второй аргумент — это исходная позиция файла. os.SEEK_END указывает позицию ссылки на конец файлового объекта.

Поэтому приведенная выше строка скрипта устанавливает курсор в конец файлового объекта.

Метод tell() файлового объекта возвращает текущую позицию курсора. Поскольку курсор уже установлен в конец, результат здесь равен размеру файла.

Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».

Статья по теме — файл Python

сообщить об этом объявлении

Мы можем получить размер файла в Python с помощью модуля os.

Размер файла в Python

В модуле python os есть функция stat(), в которой мы можем передать имя файла в качестве аргумента. Эта функция возвращает структуру кортежа, содержащую информацию о файле. Затем мы можем получить его свойство st_size, чтобы получить размер файла в байтах.

Вот простая программа для печати размера файла в байтах и ​​мегабайтах.

Вывод:

Размер файла в Python

Если вы посмотрите на функцию stat(), мы можем передать еще два аргумента: dir_fd и follow_symlinks. Однако они не реализованы для Mac OS.

Вот обновленная программа, в которой я пытаюсь использовать относительный путь, но она выдает NotImplementedError.

Размер файла Python Относительный путь NotImplementedError

Как читать большие текстовые файлы в Python

Как получить расширение файла в Python

Мне нравятся технологии с открытым исходным кодом, и я люблю писать о своем опыте работы с ними.

Комментарии

Спасибо за пример. Это было полезно. К вашему сведению, я использую Mac OS версии 10.15.5. Функция получения информации в Finder сообщает о размере файла, кратном 1 000 000 (1000 * 1000), а не 1 048 596 (1024 * 1024). Не уверен, что это изменилось в какой-то момент.
Еще раз спасибо

Комментарии закрыты.

JournalDev — один из самых популярных веб-сайтов, посвященных Java, Python, Android и связанным с ними техническим статьям. Наши учебники регулярно обновляются, не содержат ошибок и полны. Каждый месяц миллионы таких же разработчиков, как и вы, посещают JournalDev, чтобы прочитать наши руководства.

JournalDev был основан Панкаджем Кумаром в 2010 году, чтобы поделиться своим опытом и знаниями со всем миром. Ему нравятся технологии с открытым исходным кодом, и писать в JournalDev стало его страстью.

Самые популярные

Избранные сайты

© 2021 · Политика конфиденциальности · Условия использования · Свяжитесь с нами · О нас · Часть JournalDev IT Services Private Limited

В этой статье мы научимся проверять размер файла в Python. Мы будем использовать некоторые встроенные функции, а также некоторые пользовательские коды. Давайте сначала кратко рассмотрим, зачем нам нужен размер файла и как мы можем рассчитать размер файла в Python.

Проверьте размер файла в Python

В Python важно получить размер файла в случае упорядочения файлов в соответствии с размером файла или во многих сценариях использования. Вывод размера файла всегда в байтах. Значение может быть передано как кратное размеру блока файловой системы, чтобы упростить дальнейшие вычисления.

Мы изучим четыре способа проверки размера файла с помощью модуля path и os.

функции поиска() и сообщения()

Проверка размера файла с помощью функции Path.stat() в Python

В языке Python есть модуль os, который помогает программам Python взаимодействовать с операционной системой и предоставляет пользователю функциональные возможности. Здесь stat() — это функция модуля os. Для этого здесь мы используем библиотеку pathlib. В приведенном ниже примере мы использовали функцию st_size() для определения размера любого заданного файла.

Синтаксис

Пример

Он возвращает объект, который содержит так много заголовков, включая время создания файла, время последнего изменения и т. д., среди которых st_size дает точный размер файла.


Вывод stat()- os.stat_result(st_mode=33206, st_ino=4503599627421738, st_dev=47883412, st_nlink=1, st_uid=0, st_gid=0, st_size=93, st_atime=1611757910, st_mtime =1611727886, st_ctime=1611727834)
Размер файла - 93

Объяснение: первый путь импортируется из библиотеки pathlib, что упрощает выполнение операций с файлами. Имя файла передается с помощью функции stat() для получения сведений о файле, а затем используется st_size() для возврата размера файла в байтах.

Проверка размера файла с помощью функции os.stat() в Python

По сравнению с приведенным выше примером вместо использования pathlib мы использовали модуль os. Тем самым выполняя функцию os.stat(). Свойство st_size() объекта возвращается функцией os.stat().

Пример


Вывод stat()- os.stat_result(st_mode=33206, st_ino=4503599627421738, st_dev=47883412, st_nlink=1, st_uid=0, st_gid=0, st_size=93, st_atime=1611757910, st_mtime =1611727886, st_ctime=1611727834)
Размер файла - 93

Проверка размера файла с помощью функции os.path.stat() в Python

Третий способ узнать размер файла — использовать os.path.getsize() . Он также включает модуль os. Реализация os.path.getsize() проста и удобна в обработке по сравнению с os.stat(file).st_size(). Выдает ошибку os.error, если файл не существует или недоступен.

Синтаксис

Пример

В этом случае мы должны указать точный путь к файлу (абсолютный путь), а не относительный путь.

Проверка размера файла с помощью функций seek() и tell() в Python

Приведенные выше методы работают с реальными файлами, но если нам нужно что-то, что работает с «файлоподобными объектами», решение заключается в использовании функций обработки файлов seek/tell. Это работает для реальных файлов и StringIO.

В этом случае seek() будет перемещать курсор от начала до конца, а затем tell() вернет размер файла.

seek() — эта функция используется для изменения позиции курсора в файле на заданную конкретную позицию. Курсор определяет, где данные должны быть прочитаны или записаны в файле.

tell() — эта функция возвращает текущую позицию файла в файловом потоке.

Давайте посмотрим на приведенный ниже пример и посмотрим, как seek() и tell() определяют размер файла.

Invicti Web Application Security Scanner — единственное решение, обеспечивающее автоматическую проверку уязвимостей с помощью Proof-Based Scanning™.

Наша аудитория поддерживает Geekflare. Мы можем получать партнерские комиссионные за покупку ссылок на этом сайте.

Обеспечьте безопасность приложений правильно! Обнаружение, защита, мониторинг, ускорение и многое другое…

В этой статье вы научитесь проверять размер файла или папки в Python

Python — один из самых универсальных языков программирования. С его помощью вы сможете превратить небольшую программу CLI (интерфейс командной строки) в сложное веб-приложение.

Одна из самых недооцененных функций — возможность взаимодействия с операционными системами. Управление операциями ОС с помощью Python может сэкономить массу времени при создании процессов автоматизации.

Давайте посмотрим, как Python взаимодействует с ОС.

Как Python взаимодействует с ОС?

Никто не может жить изолированно от окружающей среды.Это также применимо к Python, где иногда необходимо взаимодействие с операционной системой для достижения цели.

В Python есть несколько модулей, которые позволяют нам взаимодействовать с ОС. Наиболее часто используются os, sys, pathlib и subprocess.

Поскольку это встроенные модули, вам не нужно устанавливать их с помощью PIP. Вы можете импортировать их все с помощью следующего оператора:

В приведенном ниже списке указаны основные функции каждого из этих импортов:

  • ОС: портативный способ использования системных (в зависимости от вашей ОС) функций. В большинстве случаев это правильный выбор, если только вам не нужно что-то более сложное.
  • Sys: системные параметры и функции. Этот модуль обеспечивает доступ к переменным и функциям интерпретатора. Модуль os взаимодействует с операционной системой, а sys — с интерпретатором Python.
  • Pathlib: расширенное использование пути. Позволяет представлять файловые системы в виде объектов с соответствующей семантикой для каждой ОС.
  • Подпроцесс: выполнение и управление подпроцессами непосредственно из Python. Это включает в себя работу с кодами stdin, stdout и return. Вы можете узнать больше об этом, прочитав наше руководство по подпроцессам Python.

Существуют библиотеки высокого уровня, которые включают в себя еще более специфические функции в зависимости от ваших потребностей. Тем не менее, в большинстве случаев вы можете работать с указанными выше модулями.

Примечание. Большинство функций, предоставляемых этими модулями, будут иметь разные выходные данные в зависимости от вашей ОС. Помните, что обычно лучше всего подходят UNIX и Python.

Теперь, когда вы получили представление о том, как Python взаимодействует с ОС, давайте перейдем к методам проверки размера файлов и папок. Все следующие решения доступны в размере файлов и папок в репозитории Python GitHub

Использование os.stat().st_size

В этом методе мы будем использовать функцию stat() из модуля os. Он возвращает много информации об определенном пути.

Примечание. Функция os.path.getsize() также выполняет свою работу. Преимущество использования os.stat().st_size заключается в том, что он не использует симлинки.

Прежде чем продолжить, давайте создадим тестовый файл с именем lorem.txt, в который мы собираемся вставить некоторый глупый текст. Мы можем посетить генератор текста Lorem Ipsum и вставить текст в файл lorem.txt.

В том же каталоге создайте файл с именем method1.py и вставьте приведенный ниже код:

Давайте разберем, что мы делаем с этим кодом:

  • В первой строке мы импортируем модуль ОС.
  • Переменная size содержит размер файла lorem.txt
    • Функция os.stat() возвращает кучу информации, связанной с файлом
    • Атрибут st_size представляет размер файла.

    Попробуйте запустить скрипт Python. Вы получите другой результат в зависимости от содержимого вашего файла lorem.txt.

    Вывод:

    Вывод представлен в байтах. Это вообще нечитаемо, поэтому давайте очеловечим его, чтобы мы могли лучше понять размер файла.

    Сначала установите пакет humanize, выполнив в своей оболочке следующую команду:

    Затем вы можете использовать функцию naturalsize(), которая преобразует значение в байтах в читаемый размер файла, например, в КБ, МБ, ГБ или ТБ.

    Сначала приведенный выше код выводит размер файла в байтах, а затем выводит результат в удобочитаемом размере.

    Вывод:

    Использование Pathlib

    Хотя библиотека pathlib предназначена для работы исключительно с путями, она включает в себя некоторые полезные функции из других модулей в качестве методов объектов Path (экземпляров класса Path).

    Создайте файл method2.py и импортируйте класс Path.

    Затем создайте объект Path, передав путь к файлу lorem.txt в качестве аргумента.

    Теперь вы можете получить доступ к методу stat() класса Path. Она работает так же, как и функция os.stat(), поэтому вы сможете распечатать размер файла.

    Вывод:

    Как видите, мы получили тот же результат, что и при использовании первого метода. Приведенный выше результат также печатается в байтовом формате, поэтому мы можем использовать модуль гуманизации, чтобы сделать его читабельным.

    Этот код выводит следующий результат:

    Использование команд Unix с подпроцессом:

    Модуль подпроцесса позволяет нам вызывать подпроцесс и управлять им из Python. Поэтому мы можем запускать любую команду и обрабатывать ее вывод непосредственно в Python.

    Примечание. Этот метод работает, только если вы используете ОС Unix (Linux, Mac)

    Откройте файл method3.py и вставьте приведенный ниже код:

    Погружаемся в этот фрагмент кода:

    • Мы импортируем функцию запуска из модуля подпроцесса.
    • Переменная process содержит результат выполнения команды du lorem.txt
      • du — это утилита Linux, которая позволяет нам получить дисковое пространство файла
      • capture_output предоставляет нам доступ к атрибуту standout (стандартный вывод).
      • text означает, что мы сохраняем выходные данные в виде строки, а не байтов

      Если вы запустите приведенный выше код, вы получите следующий вывод:

      Как видите, он сообщает нам размер и имя файла. Если вы хотите получить только размер файла, вам нужно разделить вывод (помните, что это строка) и напечатать первый элемент.

      Вывод:

      Этот вывод вообще не читается. Мы можем сделать вывод, что используемой единицей измерения является КБ (из-за предыдущих методов), но никто другой не мог угадать размер файла.

      Чтобы решить эту проблему, мы можем использовать флаг -h (человекочитаемый).

      Примечание. Вы можете получить руководство по этой команде, запустив man du или du ​​–help.

      Теперь вывод этого скрипта будет более читабельным:

      Если вы хотите узнать больше о модуле подпроцесса и возможных приложениях, ознакомьтесь с нашим руководством по подпроцессу Python.

      Рекурсивное получение размера папки

      Если вы хотите получить размер папки, вам нужно перебрать каждый файл, присутствующий в каталоге и его подкаталогах. Мы сделаем это двумя способами:

      • Перебор пути с помощью pathlib
      • Использование команды du с подпроцессом

      Следующий код будет использовать путь к тестовому каталогу в моей домашней папке. Вам нужно будет заменить путь к этому файлу на каталог, размер которого вы хотите получить.

      Перебор пути с помощью pathlib

      Давайте посмотрим, как можно получить размер каталога, перебирая размеры файлов.

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

      • Импортируйте класс Path и функцию naturalsize().
      • Определите функцию get_size() с путем параметра, который по умолчанию указывает на текущий каталог.
      • Переменная размера — это просто заполнитель, в который мы будем добавлять размер каждого файла.
      • Перебрать каждый файл по пути
        • Метод rglob() рекурсивно возвращает файлы, соответствующие шаблону

        Конечно, я тестирую функцию с каталогом, доступным только на моей машине. Не забудьте изменить путь к папке, которая существует на вашем компьютере.

        В моем случае я получаю следующий результат:

        Использование команды du с подпроцессом

        У этого подхода есть некоторые преимущества:

        • Результат немного точнее
        • Это намного быстрее

        Мы используем тот же подход, что и в методе 3, но на этот раз мы получаем размер каталога, а не файла.

        Вывод:

        Как видите, эти два способа получения размера папки возвращают немного разные результаты. Чем больше каталог, тем больше различий вы получите.

        Вы можете выбирать между подходом pathlib или подпроцессом. Если вы знаете, что будете использовать Linux каждый раз, когда используете подпроцесс, в противном случае вы можете использовать решение pathlib.

        Подводя итоги

        Результаты Python чрезвычайно удобны при взаимодействии с ОС. Вы можете автоматизировать процессы и сэкономить много времени с помощью Python. Основными модулями для взаимодействия с ОС являются os, sys, path и subprocess.

        Читайте также: