python Excluir um arquivo ou pasta




5 Answers

Sintaxe do Python para excluir um arquivo

import os
os.remove("/tmp/<file_name>.txt")

Ou

import os
os.unlink("/tmp/<file_name>.txt")

Melhor pratica

  1. Primeiro, verifique se o arquivo ou pasta existe ou não, apenas exclua esse arquivo. Isto pode ser conseguido de duas maneiras:
    uma. os.path.isfile("/path/to/file")
    b. Use o exception handling.

EXEMPLO para os.path.isfile

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## If file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

Manipulação de exceção

#!/usr/bin/python
import os

## Get input ##
myfile= raw_input("Enter file name to delete: ")

## Try to delete the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

RESULTADO RESPECTIVO

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

Sintaxe do Python para excluir uma pasta

shutil.rmtree()

Exemplo para shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir= raw_input("Enter directory name: ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))
python file-io folder delete-file

Como excluir um arquivo ou pasta em Python?




Para excluir arquivos:

Você pode usar unlink ou remove .

os.unlink(path, *, dir_fd=None)

Ou

os.remove(path, *, dir_fd=None)

Esta função remove (exclui) o caminho do arquivo. Se path é um diretório, o OSError é gerado.

No Python 2, se o caminho não existir, OSError com [Errno 2] ( ENOENT ) é gerado. No Python 3, FileNotFoundError com [Errno 2] ( ENOENT ) é gerado. No Python 3, como FileNotFoundError é uma subclasse de OSError , capturar o último pegará o primeiro.

Para excluir pastas:

os.rmdir(path, *, dir_fd=None)

rmdir Remove (delete) o caminho do diretório. Só funciona quando o diretório está vazio, caso contrário, OSError é gerado. Para remover árvores inteiras de diretório, shutil.rmtree() pode ser usado.

shutil.rmtree(path, ignore_errors=False, onerror=None)

shutil.rmtree Exclui uma árvore de diretórios inteira. O caminho deve apontar para um diretório (mas não um link simbólico para um diretório).

Se ignore_errors for true, os erros resultantes de remoções com falha serão ignorados e, se forem falsos ou omitidos, tais erros serão manipulados chamando um manipulador especificado por onerror ou, se isso for omitido, eles gerarão uma exceção.

Veja também:

os.removedirs(name)

os.removedirs(name) Remove diretórios recursivamente. Funciona como rmdir () exceto que, se o diretório leaf for removido com sucesso, removedirs () tenta remover sucessivamente cada diretório pai mencionado no caminho até que um erro seja levantado (que é ignorado, porque geralmente significa que um diretório pai não está vazio ).

Por exemplo, os.removedirs ('foo / bar / baz') primeiro removerá o diretório 'foo / bar / baz', e então removerá 'foo / bar' e 'foo' se eles estiverem vazios.




Você pode usar o módulo de pathlib (requer o Python 3.4+, mas há backports para versões mais antigas no PyPI: pathlib , pathlib2 ).

Para remover um arquivo, há o método unlink :

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

Ou o método rmdir para remover uma pasta vazia :

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()



shutil.rmtree é a função assíncrona, por isso, se você quiser verificar quando estiver concluído, você pode usar while ... loop

import os
import shutil

shutil.rmtree(path)

while os.path.exists(path):
  pass

print('done')



Eu recomendo usar subprocess se escrever um código bonito e legível é sua xícara de chá:

import subprocess
subprocess.Popen("rm -r my_dir", shell=True)

E se você não for engenheiro de software, talvez considere usar o Jupyter; você pode simplesmente digitar comandos bash:

!rm -r my_dir

Tradicionalmente, você usa shutil :

import shutil
shutil.rmtree(my_dir) 



Related