Mam plik tekstowy.
Jak mogę sprawdzić, czy jest pusty, czy nie?
python
file
file-length
webminal.org
źródło
źródło
stat.ST_SIZE
zamiast 6źródło
OSError
i zwrócenie False.Zarówno
getsize()
istat()
wyrzuci wyjątek, jeśli plik nie istnieje. Ta funkcja zwróci True / False bez rzucania (prostsze, ale mniej niezawodne):źródło
os.path.getsize()
os.path.isfile(fpath)
ios.path.getsize(fpath)
, w którym to przypadku proponowana funkcja zgłosi wyjątek.OSError
zamiast tego, jak zaproponowano w innym komentarzu .TypeError
który zostanie podniesiony w przypadku, gdy wejściowa fpath jestNone
.jeśli z jakiegoś powodu masz już otwarty plik, możesz spróbować:
źródło
Ok, więc dla zabawy połączę odpowiedź ghostdog74 i komentarze.
False
oznacza niepusty plik.Napiszmy więc funkcję:
źródło
Jeśli używasz Pythona 3
pathlib
, możesz uzyskać dostęp doos.stat()
informacji za pomocąPath.stat()
metody, która ma atrybutst_size
(rozmiar pliku w bajtach):źródło
jeśli masz obiekt pliku, to
źródło
Ważna uwaga: skompresowany pusty plik będzie wyglądał na niezerowy podczas testowania za pomocą funkcji
getsize()
lubstat()
:Powinieneś więc sprawdzić, czy plik do przetestowania jest skompresowany (np. Zbadać przyrostek nazwy pliku), a jeśli tak, to zwolnij go za kaucją lub zdekompresuj do tymczasowej lokalizacji, przetestuj nieskompresowany plik, a następnie usuń po zakończeniu.
źródło
Ponieważ nie zdefiniowałeś, co to jest pusty plik. Niektórzy mogą uznać plik z pustymi liniami za pusty plik. Więc jeśli chcesz sprawdzić, czy plik zawiera tylko puste wiersze (dowolny biały znak, „\ r”, „\ n”, „\ t”) , możesz postępować zgodnie z poniższym przykładem:
Python3
Wyjaśnij: w powyższym przykładzie zastosowano wyrażenie regularne (regex) w celu dopasowania zawartości (
content
) pliku.W szczególności: dla wyrażenia regularnego:
^\s*$
jako całość oznacza, że plik zawiera tylko puste linie i / lub puste spacje.-
^
zapewnia pozycję na początku linii-
\s
dopasowuje dowolny znak spacji (równy [\ r \ n \ t \ f \ v])-
*
kwantyfikator - dopasowuje od zera do nieograniczonej liczby razy, tyle razy, ile to możliwe, zwracając w razie potrzeby ( chciwy)-
$
zapewnia pozycję na końcu liniiźródło
jeśli chcesz sprawdzić, czy plik csv jest pusty, czy nie ....... spróbuj tego
źródło