Como apagar arquivos e diretórios usando Python

Suraj Joshi 30 janeiro 2023
  1. Excluir arquivos utilizando o módulo os em Python
  2. Excluir arquivos utilizando o módulo pathlib em Python
  3. Excluir arquivos com correspondência de padrões em Python
  4. Excluir diretórios utilizando o módulo .py
  5. Apaga diretórios utilizando o módulo pathlib Python
  6. Apagar diretórios não vazios utilizando o método Python shutil.rmtree
Como apagar arquivos e diretórios usando Python

Este artigo introduz como excluir arquivos e diretórios com pacotes Python embutidos, tais como os, pathlib e shutil.

Excluir arquivos utilizando o módulo os em Python

os é um pacote integrado disponível tanto em Python 2 quanto em Python 3.

Podemos utilizar remove() e unlink() do módulo os para excluir arquivos utilizando o Python. Ambas as funções são semelhantes em ação. Ambas tomam como argumento o caminho do arquivo a ser excluído.

import os

os.remove("test_dir/main.py")

Ele apaga o arquivo chamado main.py localizado dentro do módulo test_dir. Como estamos utilizando o caminho relativo aqui, o test_dir deve estar na mesma pasta raiz que a do nosso programa Python. Também podemos utilizar o caminho absoluto do arquivo.

import os

os.unlink("test_dir/main.py")

Ele também exclui o arquivo chamado main.py localizado dentro do diretório test_dir.

Ambas as funções só podem excluir arquivos. Se dermos o caminho do diretório a ser excluído, obtemos o erro IsADirectoryError.

Da mesma forma, obtemos o FileNotFoundError se o arquivo não estiver presente no caminho especificado.

Se não tivermos permissão para excluir o arquivo, obtemos o erro PermissionError.

Para resolver esses erros ao apagar o arquivo, devemos utilizar o tratamento de exceções.

import os

try:
    os.remove("test_dir/main.py")
except OSError as e:
    print(f"Error:{ e.strerror}")

Resultado:

Error:No such file or directory

Se não houver tal arquivo, obtemos o erro impresso na saída em vez de todo o programa a ser bloqueado.

Excluir arquivos utilizando o módulo pathlib em Python

Para remover arquivos utilizando o módulo pathlib, nós criamos inicialmente um objeto pathlib definido no módulo pathlib. Em seguida, utilizamos o método unlink() para apagar o arquivo.

from pathlib import Path

filePath = Path("test_dir/main.py")

try:
    filePath.unlink()
except OSError as e:
    print(f"Error:{ e.strerror}")

Aqui, nós instanciamos o objeto filePath da classe Path com a localização do arquivo a ser excluído.

O módulo pathlib só está disponível em Python 3.4 e acima. Para Python 2, precisamos instalar o módulo utilizando o pip.

Excluir arquivos com correspondência de padrões em Python

Podemos utilizar o módulo glob para combinar padrões em arquivos e depois de coletar todos os arquivos que combinam com o padrão, podemos excluir todos eles utilizando qualquer um dos métodos especificados acima.

import os
import glob

py_files = glob.glob("test_dir/*.py")

for py_file in py_files:
    try:
        os.remove(py_file)
    except OSError as e:
        print(f"Error:{ e.strerror}")

Isso exclui todos os arquivos no diretório test_dir com extensão .py.

Excluir diretórios utilizando o módulo .py

Para delimitar os diretórios utilizando Python, podemos utilizar os diretórios os, pathlib e shutlib. Os os e pathlib só podem excluir diretórios vazios enquanto o shutlib também pode remover diretórios não vazios.

import os

dirPath = "test_dir"

try:
    os.rmdir(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

Ele apaga o diretório vazio test_dir em nosso diretório de trabalho atual.

Apaga diretórios utilizando o módulo pathlib Python

Se o diretório não estiver vazio o diretório não pode ser removido utilizando este método, obtemos uma saída do programa dizendo Error: Directory not empty.

Também podemos utilizar o módulo pathlib para remover diretórios não vazios.

from pathlib import Path

dirPath = Path("test_dir")

try:
    dirPath.rmdir()
except OSError as e:
    print(f"Error:{ e.strerror}")

Ele também apaga o diretório vazio test_dir em nosso diretório de trabalho atual.

Apagar diretórios não vazios utilizando o método Python shutil.rmtree

Para apagar diretórios não vazios utilizando Python , utilizamos o método rmtree do módulo shutil.

import shutil

dirPath = "test_dir"

try:
    shutil.rmtree(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

Ele exclui o diretório test_dir em nosso diretório de trabalho atual e todo o seu conteúdo.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Python File

Artigo relacionado - Python Directory