Вот пример кода. Если из файла могут быть прочитаны две непустые строки (заголовок плюс первая строка данных), он считается непустым.
Это работает, потому что 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))