Methoden zum Überprüfen, ob eine Datei leer ist
Nachdem wir nun unsere Testdateien haben, wollen wir verschiedene Python-Methoden untersuchen, um zu überprüfen, ob eine Datei leer ist. Wir erstellen ein Python-Skript, um jeden Ansatz zu demonstrieren.
Erstellen Sie eine neue Datei namens check_empty.py
in Ihrem Projektverzeichnis, indem Sie die folgenden Schritte ausführen:
- Klicken Sie in der WebIDE auf das Symbol "Neue Datei" im Explorer-Panel
- Benennen Sie die Datei
check_empty.py
und speichern Sie sie im Verzeichnis ~/project
- Kopieren Sie den Code von jeder Methode, während wir sie durchgehen
Methode 1: Verwendung von os.path.getsize()
Der direkteste Weg, um zu überprüfen, ob eine Datei leer ist, ist die Verwendung der Funktion os.path.getsize()
aus dem Modul os
. Diese Funktion gibt die Größe einer Datei in Bytes zurück. Wenn die Datei leer ist, gibt sie 0
zurück.
Fügen Sie den folgenden Code zu Ihrer Datei check_empty.py
hinzu:
import os
def check_empty_using_getsize(file_path):
"""Check if a file is empty using os.path.getsize()"""
try:
if os.path.getsize(file_path) == 0:
return True
else:
return False
except OSError as e:
print(f"Error checking file: {e}")
return None
## Test with our files
empty_file = "/home/labex/project/empty_file.txt"
non_empty_file = "/home/labex/project/non_empty_file.txt"
print(f"Method 1: Using os.path.getsize()")
print(f"Is {empty_file} empty? {check_empty_using_getsize(empty_file)}")
print(f"Is {non_empty_file} empty? {check_empty_using_getsize(non_empty_file)}")
print()
Methode 2: Verwendung der File Read Methode
Ein weiterer Ansatz besteht darin, die Datei zu öffnen, ihren Inhalt zu lesen und zu überprüfen, ob etwas gelesen wurde. Wenn die Datei leer ist, gibt das Lesen eine leere Zeichenkette zurück.
Fügen Sie den folgenden Code zu Ihrer Datei check_empty.py
hinzu:
def check_empty_using_read(file_path):
"""Check if a file is empty by reading it"""
try:
with open(file_path, 'r') as file:
content = file.read()
if len(content) == 0:
return True
else:
return False
except IOError as e:
print(f"Error reading file: {e}")
return None
print(f"Method 2: Using file.read()")
print(f"Is {empty_file} empty? {check_empty_using_read(empty_file)}")
print(f"Is {non_empty_file} empty? {check_empty_using_read(non_empty_file)}")
print()
Methode 3: Verwendung von os.stat()
Die Funktion os.stat()
liefert detaillierte Informationen über eine Datei, einschließlich ihrer Größe. Sie können das Attribut st_size
überprüfen, um festzustellen, ob die Datei leer ist.
Fügen Sie den folgenden Code zu Ihrer Datei check_empty.py
hinzu:
def check_empty_using_stat(file_path):
"""Check if a file is empty using os.stat()"""
try:
file_stats = os.stat(file_path)
if file_stats.st_size == 0:
return True
else:
return False
except OSError as e:
print(f"Error getting file stats: {e}")
return None
print(f"Method 3: Using os.stat()")
print(f"Is {empty_file} empty? {check_empty_using_stat(empty_file)}")
print(f"Is {non_empty_file} empty? {check_empty_using_stat(non_empty_file)}")
print()
Methode 4: Verwendung des pathlib Moduls
Das pathlib
-Modul von Python bietet einen objektorientierten Ansatz für die Arbeit mit Dateipfaden. Wir können es auch verwenden, um zu überprüfen, ob eine Datei leer ist.
Fügen Sie den folgenden Code zu Ihrer Datei check_empty.py
hinzu:
from pathlib import Path
def check_empty_using_pathlib(file_path):
"""Check if a file is empty using pathlib.Path"""
try:
path = Path(file_path)
if path.stat().st_size == 0:
return True
else:
return False
except OSError as e:
print(f"Error checking file with pathlib: {e}")
return None
print(f"Method 4: Using pathlib")
print(f"Is {empty_file} empty? {check_empty_using_pathlib(empty_file)}")
print(f"Is {non_empty_file} empty? {check_empty_using_pathlib(non_empty_file)}")
Ausführen des Skripts
Lassen Sie uns nun unser Skript ausführen, um alle Methoden in Aktion zu sehen. Führen Sie im Terminal Folgendes aus:
python3 ~/project/check_empty.py
Sie sollten eine Ausgabe ähnlich dieser sehen:
Method 1: Using os.path.getsize()
Is /home/labex/project/empty_file.txt empty? True
Is /home/labex/project/non_empty_file.txt empty? False
Method 2: Using file.read()
Is /home/labex/project/empty_file.txt empty? True
Is /home/labex/project/non_empty_file.txt empty? False
Method 3: Using os.stat()
Is /home/labex/project/empty_file.txt empty? True
Is /home/labex/project/non_empty_file.txt empty? False
Method 4: Using pathlib
Is /home/labex/project/empty_file.txt empty? True
Is /home/labex/project/non_empty_file.txt empty? False
Wie Sie sehen können, identifizieren alle vier Methoden unsere leeren und nicht leeren Dateien korrekt. Im nächsten Schritt erstellen wir ein praktisches Skript, das diese Methoden für die Dateiverwaltung verwendet.