Métodos para Verificar se um Arquivo está Vazio
Agora que temos nossos arquivos de teste, vamos explorar diferentes métodos Python para verificar se um arquivo está vazio. Criaremos um script Python para demonstrar cada abordagem.
Crie um novo arquivo chamado check_empty.py no seu diretório de projeto seguindo estas etapas:
- No WebIDE, clique no ícone "New File" no painel Explorer
- Nomeie o arquivo
check_empty.py e salve-o no diretório ~/project
- Copie o código de cada método à medida que avançamos
Método 1: Usando os.path.getsize()
A maneira mais direta de verificar se um arquivo está vazio é usar a função os.path.getsize() do módulo os. Esta função retorna o tamanho de um arquivo em bytes. Se o arquivo estiver vazio, ele retorna 0.
Adicione o seguinte código ao seu arquivo check_empty.py:
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()
Método 2: Usando o Método de Leitura de Arquivo
Outra abordagem é abrir o arquivo, ler seu conteúdo e verificar se algo foi lido. Se o arquivo estiver vazio, a leitura retornará uma string vazia.
Adicione o seguinte código ao seu arquivo check_empty.py:
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()
Método 3: Usando os.stat()
A função os.stat() fornece informações detalhadas sobre um arquivo, incluindo seu tamanho. Você pode verificar o atributo st_size para determinar se o arquivo está vazio.
Adicione o seguinte código ao seu arquivo check_empty.py:
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()
Método 4: Usando o Módulo pathlib
O módulo pathlib do Python fornece uma abordagem orientada a objetos para trabalhar com caminhos de arquivos. Podemos usá-lo para verificar se um arquivo está vazio também.
Adicione o seguinte código ao seu arquivo check_empty.py:
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)}")
Executando o Script
Agora vamos executar nosso script para ver todos os métodos em ação. No terminal, execute:
python3 ~/project/check_empty.py
Você deve ver uma saída semelhante a esta:
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
Como você pode ver, todos os quatro métodos identificam corretamente nossos arquivos vazios e não vazios. Na próxima etapa, criaremos um script prático que usa esses métodos para gerenciamento de arquivos.