Как проверить, является ли файл пустым python

Обновлено: 21.11.2024

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

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

1. Использование метода поиска ОС:

Библиотека python для ОС [1] имеет встроенную функцию, которую можно использовать для файловых объектов, чтобы проверить, является ли данный файл пустым или нет. Это самый эффективный способ проверки, и он фактически сообщает, пуст ли файл в любом заданном состоянии.

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

2. Использование функции ОС st_size:

В Python библиотека ОС имеет встроенную функцию с именем st_size. Эта функция, если она используется для любого файла, позволит вам узнать размер этого файла. И если размер файла равен нулю, это означает, что файл пуст и в нем нет содержимого. Давайте посмотрим на это в реальном коде.

Вывод:

3. Использование встроенной функции Path Lib

В Python 3 и выше есть библиотека с именем Path, которая имеет встроенную функцию в виде статистики и атрибутов st_size.

Вывод:

4. Использование функции getsize ОС

В библиотеке ОС есть еще одна встроенная функция, известная как getsize(). Эта функция возвращает ноль, если файл или входной файл пуст, в противном случае возвращается размер файла.

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

Вывод:

Подведение итогов

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

Если вам понравился наш пост, сообщите нам об этом в разделе комментариев. Следите за нами в Facebook и Twitter.

В этой статье мы обсудим различные способы проверки того, является ли файл пустым, то есть его размер равен 0, с помощью os.stat() или os.path.getsize() или путем чтения его первого символа.

Проверить, пуст ли файл, используя os.stat() в Python

Python предоставляет функцию для получения статистики о файле,

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

Давайте воспользуемся этим, чтобы получить размер файла mysample.txt, и если размер равен 0, это означает, что файл пуст, т.е.

Поскольку наш файл пуст, вывод будет таким,

P.S. У нас уже был пустой файл mysample.txt в том же каталоге.

Но мы должны быть осторожны при его использовании, потому что, если файл не существует по указанному пути, он может вызвать ошибку, например FileNotFoundError,

Поэтому мы должны сначала проверить, существует ли файл, прежде чем вызывать os.stat(). Итак, давайте создадим отдельную функцию для проверки, существует ли файл и он пуст, т.е.

Эта функция сначала подтверждает, существует файл или нет, и если да, то проверяет, равен ли его размер 0 или нет (если файл пуст).
Используем эту функцию, чтобы проверить, пуст ли файл mysample.txt,

Подтверждает, что файл ‘mysample.txt’ пуст.

Проверить, пуст ли файл, используя os.path.getsize() в Python

В модуле ОС Python предусмотрена другая функция, т. е.

Он принимает путь к файлу (строку) в качестве аргумента и возвращает размер файла в байтах. Если файл не существует и заданный путь, возникает ошибка os.error.

Давайте воспользуемся этим, чтобы получить размер файла ‘mysample.txt’, и если размер равен 0, это означает, что файл пуст, т.е.

Поскольку наш файл пуст, вывод будет таким,

Если файл не существует по указанному пути, он может вызвать ошибку, например FileNotFoundError,

Поэтому мы должны сначала проверить, существует ли файл или нет. Если файл существует, вызовите только os.path.getsize(). Мы создали функцию, которая проверяет, существует ли файл или нет, и если он существует, то проверяет, является ли он пустым или нет,

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

Подтверждает, что файл ‘mysample.txt’ пуст.

Проверить, пуст ли файл, прочитав его первый символ в Python


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

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

Подтверждает, что файл mysample.txt пуст.

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

Вывод:

Учебники по Pandas – изучите анализ данных с помощью Python

Вы хотите сделать карьеру в области Data Science с помощью Python?

Наука о данных — это будущее, и оно уже наступило. На сегодняшний день специалисты по данным являются самыми востребованными профессионалами. Чтобы стать хорошим Data Scientist или сменить профессию в Data Science, нужно обладать нужным набором навыков. Мы составили список лучших профессиональных сертификатов в области науки о данных с помощью Python. Эти курсы научат вас инструментам программирования для науки о данных, таким как Pandas, NumPy, Matplotlib, Seaborn, и тому, как использовать эти библиотеки для реализации моделей машинного обучения.

Ознакомьтесь с подробным обзором лучшего профессионального сертификата по науке о данных с Python.

Помните, что наука о данных требует большого терпения, настойчивости и практики. Итак, начните учиться сегодня.

Присоединяйтесь к сообществу разработчиков Python в LinkedIn

Похожие записи

Вставить элемент в начало массива NumPy

Как добавить столбцы в массив NumPy в Python

Как объединить массивы NumPy в Python?

Добавить строку в массив NumPy в Python

Добавить элементы в конец массива в Python

Как удалить столбцы из массива NumPy

Как удалить строки из массива NumPy

Удалить последний элемент из массива NumPy в Python

Удалить первый элемент из массива NumPy в Python

Проверьте, является ли двумерный массив NumPy или матрица симметричным

Редактировать значения ячеек в CSV-файлах с помощью Pandas в Python

Сортировка массива NumPy в порядке убывания в Python

Преобразование списка в набор в Python

Добавление двух элементов списка в Python

Добавление одного списка к другому списку в Python

Удалить дубликаты из массива NumPy в Python

Проверить, существует ли столбец в Pandas DataFrame

Проверить, равны ли два массива NumPy в Python

Pandas: проверьте, все ли значения в столбце равны нулю

Проверить, все ли значения в столбце являются NaN в Pandas

Оставить комментарий Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Реклама

Реклама

Последние сообщения

Учебники по Python

Что-то ищу

Учебники по C++/C++11

Условия использования

Условия и политика

Учебники по Python

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

Отказ от ответственности

Условия и политика

Авторское право © 2022 thisPointer

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

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

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

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

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

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

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

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

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

Проверить, является ли файл пустым или нет

Программисты могут столкнуться с ситуациями, когда им необходимо проверить, есть ли в файле данные или файл пуст, прежде чем выполнять какие-либо операции с файлами. Пустой файл не содержит никаких данных и имеет нулевой размер. Чтобы проверить, пустой файл или нет, вы должны проверить, существует ли ваш файл. Если файл не существует, будет возвращено "FileNotFoundError".

Мы узнаем четыре способа проверить, пуст файл или нет.

  1. функция os.stat()
  2. функция os.path.getsize()
  3. Прочитав первый символ
  4. Использование модуля регулярных выражений

Пример: проверить, существует файл или нет

Этот метод использует os.path.exists() из модуля os в Python для проверки существования файла. Он принимает путь к файлу в качестве аргумента. Он возвращает True, если файл существует, иначе возвращает False.

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

Модуль os предоставляет функцию os.stat().st_size для проверки того, является ли файл пустым или нет. Он принимает путь к файлу в качестве аргумента. Он проверит размер файла. Если размер файла равен 0, файл будет распечатан как пустой. Если ваш файл содержит пустые пробелы или новые строки, он напечатает этот файл как не пустой.


Файл не пустой.

Пример: если файл не существует

Если вы хотите проверить размер файла и файл не существует, будет возвращено "FileNotFoundError". Посмотрите на фрагмент кода ниже, чтобы увидеть ошибку.


FileNotFoundError: [WinError 2] Система не может найти указанный файл: 'textfile.txt'

Проверить, является ли файл пустым, используя функцию os.path.getsize()

Модуль os предоставляет другую функцию os.path.getsize() для проверки, является ли файл пустым или нет. Он принимает путь к файлу в качестве аргумента. Он проверит размер файла. Если размер файла равен 0, файл будет распечатан как пустой. Если ваш файл содержит пустые пробелы или новые строки, он напечатает этот файл как не пустой.


Файл не пустой.

Пример: если файл не существует

Если вы хотите проверить размер файла и файл не существует, также будет возвращено "FileNotFoundError". Посмотрите на фрагмент кода ниже, чтобы увидеть ошибку.


FileNotFoundError: [WinError 2] Система не может найти указанный файл: 'textfile.txt'

Проверить, является ли файл пустым, прочитав его первый символ

Этот метод открывает файл в режиме чтения и считывает только первый символ данного файла с помощью функции read(). 1 передается в качестве аргумента для обозначения первого символа. Он также может принимать пустые пробелы или символы новой строки в качестве первого символа. Если он не может прочитать первый символ файла, он печатает файл как пустой.


Файл не пустой

Пример: если файл не существует

Если вы хотите проверить размер файла и файл не существует, также будет возвращено "FileNotFoundError". Посмотрите на фрагмент кода ниже, чтобы увидеть ошибку.

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

Различие между файлом и каталогом

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

Допустим, у нас есть две переменные-заполнители dirpath и filepath, идентифицирующие локальный каталог и файл:

Использование os.path

Python предоставляет модуль os, который представляет собой стандартный пакет функций, объектов и констант Python для работы с операционной системой.

os.path предоставляет нам функции isfile() и isdir(), чтобы легко отличить файл от каталога:

Обе эти функции возвращают логическое значение.

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

В Python 3.4 появился модуль pathlib, предоставляющий объектно-ориентированный интерфейс для работы с файловыми системами.

pathlib упрощает работу с файловыми системами по сравнению с os или os.path .

Класс Path модуля pathlib принимает путь в качестве аргумента и возвращает объект Path, который можно легко запросить или связать с помощью методов и атрибутов:

Здесь мы проверяем, является ли объект Path файлом или каталогом.

Проверить, пуст ли файл

Пустой файл или файл с нулевым байтом – это любой файл, не содержащий данных или содержимого. Файл может быть любого типа. Некоторые файлы (например, музыкальные файлы) могут не содержать данных, но все же содержать метаданные (например, об авторе). Такие файлы нельзя считать пустым файлом.

В Linux и MacOS можно быстро создать пустой файл:

Давайте теперь определим переменные - emptyfile и nonemptyfile, указывающие на пустой файл с нулевыми байтами и непустой файл с размером в один байт:

Давайте посмотрим на тип и размер этих файлов:

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

В качестве альтернативы мы можем использовать модуль Python os для проверки этой информации. Функция os.stat() возвращает объект stat_result. Этот объект в основном представляет собой структуру данных, представляющую собой набор свойств файла:

Использование os.path

Модуль Python os.path упрощает работу с путями к файлам. Помимо проверки существования пути или определения их типа, мы также можем получить размер файла, указанный в виде строки.

os.path.getsize() возвращает размер файла, указанного как объект, подобный пути, и его намного проще использовать, чем os.stat() :

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

Если мы работаем с Python 3.4 или выше, мы можем использовать модуль pathlib для получения размера файла. Это в основном заменяет модуль os. Path.stat() возвращает свойство stat_result объекта Path, которое эквивалентно возвращаемому значению os.stat():

В результате:

Бесплатная электронная книга: Git Essentials

Ознакомьтесь с нашим практическим руководством по изучению Git, включающим передовые практики, общепринятые стандарты и памятку. Перестаньте гуглить команды Git и на самом деле изучите их!

Проверить, пуст ли каталог

Каталог, который не содержит других файлов или подкаталогов, является пустым каталогом. Однако каждый каталог (даже пустой) содержит следующие 2 записи:

    <ли>. (произносится как точка) указывает на текущий каталог и полезен в таких операциях, как поиск чего-либо внутри текущего каталога
  • .. (произносится как двойная точка) ссылается на родительский каталог текущего каталога, требуется для возврата из текущего каталога

Давайте определим две переменные — emptydirectory и nonemptydirectory, указывающие на пустой и непустой каталог:

В пустом каталоге нет элементов:

В непустом каталоге есть один файл:

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

os.listdir() возвращает последовательность, содержащую имена всех элементов, найденных в пути к каталогу, переданном в качестве аргумента. Он не включает в себя . и .. записи:

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

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

Функция os.listdir() полезна, когда вам нужна целая куча имен записей в виде списка для дальнейшей обработки. Однако, чтобы проверить наличие хотя бы одной записи, нам не нужен список всех файлов внутри.

Если каталог большой, функция os.listdir() будет выполняться долго, а если в нем больше 0 записей, ответ на наш вопрос будет решен.

На помощь приходит функция os.scandir(), которая возвращает ленивую итерацию или генератор.

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

Этот подход примерно в ~200 раз быстрее для каталогов, содержащих примерно 1000 файлов.

Поэтому вместо того, чтобы перебирать всю структуру каталогов, мы можем использовать os.scandir(), чтобы проверить, есть ли хотя бы одна запись в пути к каталогу:

Мы используем встроенную функцию next() для извлечения следующего доступного элемента из ленивого итератора, возвращаемого функцией os.scandir() . Поскольку в пустом каталоге нет доступных элементов, он возвращает None, тогда как для непустого каталога возвращается объект os.DirEntry.

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

Предпочтительнее использовать модуль os с помощью модуля pathlib. Мы будем использовать pathlib.Path.itertir() , который не только проще, но и гораздо проще в использовании, чем os.listdir() или os.scandir() .

Он возвращает ленивый итерируемый или генераторный объект, очень похожий на os.scandir() , который перебирает файлы в пути к каталогу, переданном в качестве аргумента:

Используя next() , мы пытаемся получить следующий доступный элемент. Если None в качестве возвращаемого элемента по умолчанию, next() не вызовет исключение StopIteration, если в коллекции нет элемента:

Большинство встроенных функций Python работают с итерируемыми объектами, включая функцию any(), которая возвращает значение True, если итерируемый имеет хотя бы один элемент, который может быть оценивается как True :

Заключение

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

Это можно сделать с помощью модулей os или pathlib и их вспомогательных функций и классов.

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