Ich habe eine Textdatei.
Wie kann ich überprüfen, ob es leer ist oder nicht?
python
file
file-length
webminal.org
quelle
quelle
stat.ST_SIZE
statt 6quelle
OSError
False fangen und zurückgeben.Beide
getsize()
undstat()
lösen eine Ausnahme aus, wenn die Datei nicht vorhanden ist. Diese Funktion gibt True / False zurück, ohne zu werfen (einfacher, aber weniger robust):quelle
os.path.getsize()
os.path.isfile(fpath)
und entfernt werdenos.path.getsize(fpath)
kann. In diesem Fall löst die vorgeschlagene Funktion eine Ausnahme aus.OSError
, wie in einem anderen Kommentar vorgeschlagen .TypeError
Müssen auch abfangen, was für den Fall ausgelöst wird, dass der Eingabe-Pfad istNone
.Wenn Sie die Datei aus irgendeinem Grund bereits geöffnet hatten, können Sie Folgendes versuchen:
quelle
Ok, also werde ich die Antwort von ghostdog74 und die Kommentare nur zum Spaß kombinieren .
False
bedeutet eine nicht leere Datei.Schreiben wir also eine Funktion:
quelle
Wenn Sie Python3 mit verwenden
pathlib
, können Sieos.stat()
mithilfe derPath.stat()
Methode mit dem Attributst_size
(Dateigröße in Byte) auf Informationen zugreifen :quelle
Wenn Sie das Dateiobjekt haben, dann
quelle
Ein wichtiger Punkt: Eine komprimierte leere Datei scheint beim Testen mit
getsize()
oder mitstat()
Funktionen wie folgt ungleich Null zu sein :Sie sollten daher prüfen, ob die zu testende Datei komprimiert ist (z. B. das Dateinamensuffix überprüfen). Wenn dies der Fall ist, können Sie sie entweder sichern oder an einen temporären Speicherort dekomprimieren, die nicht komprimierte Datei testen und anschließend löschen.
quelle
Da hast du nicht definiert was eine leere Datei ist. Einige betrachten eine Datei mit nur leeren Zeilen möglicherweise auch als leere Datei. Wenn Sie also überprüfen möchten, ob Ihre Datei nur Leerzeilen enthält (ein Leerzeichen, '\ r', '\ n', '\ t') , können Sie dem folgenden Beispiel folgen:
Python3
Erklären Sie: Im obigen Beispiel wird ein regulärer Ausdruck (Regex) verwendet, um dem Inhalt (
content
) der Datei zu entsprechen.Insbesondere bedeutet: für Regex von:
^\s*$
als Ganzes, wenn die Datei nur Leerzeilen und / oder Leerzeichen enthält.- setzt die
^
Position am Zeilenanfang fest-
\s
stimmt mit einem beliebigen Leerzeichen überein (entspricht [\ r \ n \ t \ f \ v])-
*
Quantifizierer - Stimmt so oft wie möglich zwischen null und unbegrenzt überein und gibt bei Bedarf etwas zurück ( gierig)-
$
behauptet die Position am Ende einer Zeilequelle
Wenn Sie überprüfen möchten, ob die CSV-Datei leer ist oder nicht, versuchen Sie dies
quelle