Как получить расширение и размер файла в Python
Мы можем использовать функцию splitext() модуля os в Python, чтобы получить расширение файла. Эта функция разбивает путь к файлу на кортеж, имеющий два значения – корень и расширение.
Вот простая программа для получения расширения файла на Python.
Получение расширения файла с помощью модуля Pathlib
Мы также можем использовать модуль pathlib, чтобы получить расширение файла. Этот модуль был представлен в версии Python 3.4.
Всегда лучше использовать стандартные методы, чтобы получить расширение файла. Если вы уже используете модуль os, используйте метод splitext(). Для объектно-ориентированного подхода используйте модуль pathlib.
Получение размера файла
Мы можем получить размер файла в Python, используя модуль os.
Модуль os имеет функцию stat(), где мы можем передать имя файла в качестве аргумента. Эта функция возвращает структуру кортежа, содержащую информацию о файле. Затем мы можем получить его свойство st_size, чтобы получить размер файла в байтах.
Вот простая программа для печати размера файла в байтах и мегабайтах.
Если вы посмотрите на функцию stat(), мы можем передать еще два аргумента: dir_fd и follow_symlinks. Однако они не реализованы для Mac OS.
Вот обновленная программа, в которой я пытаюсь использовать относительный путь, но выдает NotImplementedError.
Python как узнать размер файла
Функция getsize() модуля os.path в Python.
Получить размер файла в байтах.
Синтаксис:
Параметры:
Возвращаемое значение:
Описание:
Примеры использования:
Как проверить размер файла в Python? – 9 Ответов
Другие ответы работают на реальные файлы, но если вам нужно что-то, что работает для «файловых объектов», попробуйте следующее:
Edit
Другое отличие между этим и os.stat() заключается в том, что вы можете stat() файл, даже если у вас нет разрешения на его чтение. Очевидно, что подход seek/tell не будет работать, если у вас нет разрешения на чтение.
Изменить 2
В предположении Джонатона, здесь параноидальная версия. (Версия выше оставляет указатель файла в конце файла, поэтому, если вы попытаетесь прочитать из файла, вы получите нулевые байты!)
Как проверить размер файла в python? (python)
Другие ответы работают на реальные файлы, но если вам нужно что-то, что работает для «файловых объектов», попробуйте следующее:
Edit
Другое отличие между этим и os.stat() заключается в том, что вы можете stat() файл, даже если у вас нет разрешения на его чтение. Очевидно, что подход seek/tell не будет работать, если у вас нет разрешения на чтение.
Изменить 2
В предположении Джонатона, здесь параноидальная версия. (Версия выше оставляет указатель файла в конце файла, поэтому, если вы попытаетесь прочитать из файла, вы получите нулевые байты!)
Получить размер файла перед загрузкой в Python
я воспроизвел то, что вы видите:
что я здесь делаю не так? Это ОС.stat ().st_size не возвращает правильный размер?
изменить: Хорошо, я понял, в чем проблема:
убедитесь, что вы открываете оба файла для бинарного чтения/записи.
автор: Jonathan Works
Вычисление размера каталога с помощью Python?
следующий скрипт печатает размер каталога всех подкаталогов для указанного каталога. Он также пытается извлечь выгоду (если это возможно) из кэширования вызовов рекурсивных функций. Если аргумент опущен, скрипт будет работать в текущем каталоге. Выходные данные сортируются по размеру каталога от самых больших до самых маленьких. Так вы можете приспособить его для ваших потребностей.
PS я использовал рецепт 578019 для показа размера каталога в удобном для человека формате (http://code.activestate.com/recipes/578019/)
EDIT: перемещен null_decorator выше, как рекомендовал user2233949
Как проверить размер файла в Python?
Другие ответы работают для реальных файлов, но если вам нужно что-то, что работает для «файловых объектов», попробуйте это:
редактировать
Редактировать 2
По предложению Джонатона, вот параноидальная версия. (Приведенная выше версия оставляет указатель файла в конце файла, поэтому, если вы попытаетесь прочитать файл, вы получите ноль байтов назад!)
Автор: Mark E. Haase Размещён: 29.09.2013 03:41
Получить размер файла в python тремя способами
Существуют разные методы получения размера файла в python, и в этой статье объясняются 3 из этих методов с примерами.
Определение размера файла становится важным, когда вы хотите отслеживать определенный файл на предмет ограничения размера или когда вы хотите упорядочить файлы в каталоге на основе их размера.
Приведенный выше код дает следующий результат
Размер файла 760 байт
Эта структура имеет множество свойств, из которых свойство st_size содержит размер файла (в байтах), присутствующего по указанному пути.
Пример,
Вывод этого кода следующий
Размер файла 760 байт
Как только мы получим объект, указывающий на файл, необходимо предпринять следующие шаги, чтобы узнать размер файла с помощью этого метода.
Пример,
Размер файла 760 байтов
Надеюсь, этот пост поможет вам в вычислении размера файла с использованием Python.
Вычисление размера каталога с помощью Python?
прежде чем я заново изобрету это конкретное колесо, у кого-нибудь есть хорошая процедура для вычисления размера каталога с помощью Python? Было бы очень хорошо, если бы процедура отформатировала размер красиво в Mb/Gb и т. д.
24 ответов
это бросается в подкаталоги:
и oneliner для удовольствия с помощью os.listdir (не включает подкаталоги):
Обновлено Использовать os.путь.getsize не, это яснее, чем использование ОС.stat ().st_size метод.
спасибо ghostdog74 за указание на это!
обновить 2018
если вы используете Python 3.4 или предыдущий, вы можете использовать более эффективный walk метод, предоставленный третьей стороной scandir пакета. В Python 3.5 и позже этот пакет был включен в стандартную библиотеку и os.walk получил соответствующее увеличение производительности.
некоторые из предложенных до сих пор подходов реализуют рекурсию, другие используют оболочку или не будут производить аккуратно отформатированные результаты. Когда ваш код является одноразовым для платформ Linux,вы можете получить форматирование как обычно, включая рекурсию, в виде однострочного. За исключением print в последней строке, он будет работать на текущей версии python2 и python3 :
просто, эффективно и будет работать для файлов и многоуровневых каталогов:
немного поздно через 5 лет, но поскольку это все еще находится в хитлистах поисковых систем, это может помочь.
Файлы в python, ввод-вывод
Эта статья посвящена работе с файлами (вводу/выводу) в Python: открытие, чтение, запись, закрытие и другие операции.
Файлы Python
Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename).
В Python существует два типа файлов:
Текстовые файлы
Это файлы с человекочитаемым содержимым. В них хранятся последовательности символов, которые понимает человек. Блокнот и другие стандартные редакторы умеют читать и редактировать этот тип файлов.
Бинарные файлы
В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.
Любую операцию с файлом можно разбить на три крупных этапа:
Открытие файла
Метод open()
Пример
Создадим текстовый файл example.txt и сохраним его в рабочей директории.
Следующий код используется для его открытия.
Следующий код используется для вывода содержимого файла и информации о нем.
Закрытие файла
Метод close()
После открытия файла в Python его нужно закрыть. Таким образом освобождаются ресурсы и убирается мусор. Python автоматически закрывает файл, когда объект присваивается другому файлу.
Существуют следующие способы:
Способ №1
После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.
Способ №2
Без него программа завершается некорректно.
Вот как сделать это исключение:
Этот метод гарантирует, что если операции над файлом вызовут исключения, то он закроется до того как программа остановится.
Способ №3
Инструкция with
В таком случае инструкция close не нужна, потому что with автоматически закроет файл.
Вот как это реализовать в коде.
Чтение и запись файлов в Python
В Python файлы можно читать или записывать информацию в них с помощью соответствующих режимов.
Функция read()
Функция read() используется для чтения содержимого файла после открытия его в режиме чтения ( r ).
Синтаксис
Пример
Функция readline()
Функция readline() используется для построчного чтения содержимого файла. Она используется для крупных файлов. С ее помощью можно получать доступ к любой строке в любой момент.
Пример
Создадим файл test.txt с нескольким строками:
Обратите внимание, как в последнем случае строки отделены друг от друга.
Функция write()
Функция write() используется для записи в файлы Python, открытые в режиме записи.
Если пытаться открыть файл, которого не существует, в этом режиме, тогда будет создан новый.
Синтаксис
Пример
Предположим, файла xyz.txt не существует. Он будет создан при попытке открыть его в режиме чтения.
Переименование файлов в Python
Функция rename()
Функция rename() используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os.
Пример
Текущая позиция в файлах Python
Как определить размер объекта в Python?
Я хочу знать, как получить размер объектов, таких как строка, целое число и т. Д. В Python.
Я использую файл XML, который содержит поля размера, которые определяют размер значения. Я должен разобрать этот XML и сделать свое кодирование. Когда я хочу изменить значение определенного поля, я проверю поле размера этого значения. Здесь я хочу сравнить, имеет ли новое значение, которое я собираюсь ввести, такой же размер, как в XML. Мне нужно проверить размер нового значения. В случае строки я могу сказать ее длину. Но в случае int, float и т. Д. Я запутался.
Просто используйте функцию sys.getsizeof, определенную в sys модуле.
Вернуть размер объекта в байтах. Объект может быть любым типом объекта. Все встроенные объекты будут возвращать правильные результаты, но это не должно выполняться для сторонних расширений, поскольку это зависит от реализации.
getsizeof вызывает метод объекта __sizeof__ и добавляет дополнительные издержки сборщика мусора, если объектом управляет сборщик мусора.
Пример использования в python 3.0:
Как определить размер объекта в Python?
Ответ «Просто используйте sys.getsizeof» не является полным ответом.
Более полный ответ
Используя 64-битный Python 3.6 из дистрибутива Anaconda, с помощью sys.getsizeof, я определил минимальный размер следующих объектов и обратите внимание, что устанавливает и диктует предварительное выделение пространства, поэтому пустые не увеличиваются снова до истечения заданного количества (что может зависит от реализации языка):
Как вы это интерпретируете? Хорошо, скажем, у вас есть набор из 10 предметов. Если каждый элемент имеет размер 100 байт, то насколько велика вся структура данных? Сам набор равен 736, потому что его размер увеличился до 736 байт. Затем вы добавляете размер элементов, так что всего получается 1736 байт.
Некоторые предостережения для определений функций и классов:
Обратите внимание, что каждое определение класса имеет структуру прокси __dict__ (48 байт) для атрибутов класса. У каждого слота есть дескриптор (например, a property ) в определении класса.
Временные интервалы начинаются с 48 байтов в первом элементе и увеличиваются на 8 каждый. Только пустые объекты со слотами имеют 16 байтов, и экземпляр без данных имеет очень мало смысла.
Также обратите внимание, что мы используем это, sys.getsizeof() потому что мы заботимся об использовании предельного пространства, которое включает в себя накладные расходы на сборку мусора для объекта, из документов :
getsizeof () вызывает метод объекта __sizeof__ и добавляет дополнительные издержки сборщика мусора, если объектом управляет сборщик мусора.
Также обратите внимание, что изменение размеров списков (например, повторное добавление к ним) заставляет их предварительно распределять пространство, аналогично наборам и диктам. Из исходного кода listobj.c :
Исторические данные
Анализ Python 2.7, подтвержденный guppy.hpy и sys.getsizeof :
Обратите внимание, что словари ( но не наборы ) получили более компактное представление в Python 3.6
Я думаю, что 8 байтов на каждый элемент для ссылки имеют большой смысл на 64-битной машине. Эти 8 байтов указывают на место в памяти, в котором находится содержащийся элемент. 4 байта имеют фиксированную ширину для юникода в Python 2, если я правильно помню, но в Python 3 str становится юникодом ширины, равной максимальной ширине символов.
Более полная функция
Мы хотим положиться на gc.get_referents этот поиск, потому что он работает на уровне C (что делает его очень быстрым). Недостатком является то, что get_referents может возвращать избыточные члены, поэтому мы должны убедиться, что мы не удваиваем счет.
Мы собираемся использовать черный список типов, поэтому мы не включаем всю программу в наш счетчик размеров.
Например, функции знают достаточно много о модулях, в которых они созданы.
Другое отличие состоит в том, что строки, являющиеся ключами в словарях, обычно интернированы, поэтому они не дублируются. Проверка id(key) также позволит нам избежать подсчета дубликатов, что мы и сделаем в следующем разделе. Решение черного списка пропускает подсчет ключей, которые являются строками в целом.
Типы в белых списках, Рекурсивный посетитель (старая реализация)
Функция такого типа дает гораздо более детальный контроль над типами, которые мы собираемся рассчитывать на использование памяти, но есть опасность пропустить типы:
И я проверил это довольно случайно (я должен протестировать это):
Эта реализация разбивает определения классов и определения функций, потому что мы не используем все их атрибуты, но поскольку они должны существовать в процессе только один раз в памяти, их размер на самом деле не имеет большого значения.





