Проверка того, что файл csv пуст даже с одним заголовком - PullRequest
0 голосов
/ 02 августа 2020

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

Я пробовал использование файлов if os.stat(filename).st_size == 0:, содержащих только строку заголовка, никогда не будет считаться пустым файлом. Какую команду мне следует использовать вместо этого?

Я хочу убедиться, что первая строка в файлах CSV также считается пустым файлом.

1 Ответ

0 голосов
/ 02 августа 2020

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

Это работает, потому что readline() возвращает пустую строку, если встречается конец файла, а пустая строка - считается ложным в Python.

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

import glob


def has_data_rows(fname):
    with open(fname) as file:
        return file.readline() and file.readline()


for fname in glob.glob('./*.csv'):
    if has_data_rows(fname):
        print('file {} has data rows'.format(fname))
    else:
        print('file {} is empty or has only header row'.format(fname))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...