in

¿Cómo eliminar un archivo o carpeta en Python?

apple touch icon@2

¿Cómo elimino un archivo o carpeta en Python?

Para Python 3, para eliminar el archivo y el directorio individualmente, use el unlink y rmdir Path métodos de objeto respectivamente:

from pathlib import Path
dir_path = Path.home() / 'directory' 
file_path = dir_path / 'file'

file_path.unlink() # remove file

dir_path.rmdir()   # remove directory

Tenga en cuenta que también puede utilizar rutas relativas con Path objetos, y puede verificar su directorio de trabajo actual con Path.cwd.

Para eliminar archivos y directorios individuales en Python 2, consulte la sección etiquetada a continuación.

Para eliminar un directorio con contenido, use shutil.rmtree, y tenga en cuenta que esto está disponible en Python 2 y 3:

from shutil import rmtree

rmtree(dir_path)

Demostración

Nuevo en Python 3.4 es el Path objeto.

Usemos uno para crear un directorio y un archivo para demostrar el uso. Tenga en cuenta que usamos el / para unir las partes de la ruta, esto soluciona los problemas entre los sistemas operativos y los problemas del uso de barras invertidas en Windows (donde necesitaría duplicar sus barras invertidas como \ o usa cadenas sin procesar, como r"foobar"):

from pathlib import Path

# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()

file_path = directory_path / 'file'
file_path.touch()

y ahora:

>>> file_path.is_file()
True

Ahora eliminémoslos. Primero el archivo:

>>> file_path.unlink()     # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False

Podemos usar globbing para eliminar varios archivos; primero creemos algunos archivos para esto:

>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()

Luego, repita el patrón global:

>>> for each_file_path in directory_path.glob('*.my'):
...     print(f'removing {each_file_path}')
...     each_file_path.unlink()
... 
removing ~/directory/foo.my
removing ~/directory/bar.my

Ahora, demostrando cómo eliminar el directorio:

>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False

¿Qué pasa si queremos eliminar un directorio y todo lo que contiene? Para este caso de uso, utilice shutil.rmtree

Recreemos nuestro directorio y archivo:

file_path.parent.mkdir()
file_path.touch()

y nota que rmdir falla a menos que esté vacío, por lo que rmtree es tan conveniente:

>>> directory_path.rmdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
    self._accessor.rmdir(self)
  File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/username/directory'

Ahora, importe rmtree y pase el directorio a la función:

from shutil import rmtree
rmtree(directory_path)      # remove everything 

y podemos ver que todo se ha eliminado:

>>> directory_path.exists()
False

Python 2

Si está en Python 2, hay una backport del módulo pathlib llamado pathlib2, que se puede instalar con pip:

$ pip install pathlib2

Y luego puede alias de la biblioteca a pathlib

import pathlib2 as pathlib

O simplemente importe directamente el Path objeto (como se demuestra aquí):

from pathlib2 import Path

Si es demasiado, puede eliminar archivos con os.remove o os.unlink

from os import unlink, remove
from os.path import join, expanduser

remove(join(expanduser('~'), 'directory/file'))

o

unlink(join(expanduser('~'), 'directory/file'))

y puedes eliminar directorios con os.rmdir:

from os import rmdir

rmdir(join(expanduser('~'), 'directory'))

Tenga en cuenta que también hay un os.removedirs – Solo elimina directorios vacíos de forma recursiva, pero puede adaptarse a su caso de uso.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

desktop icon

Compilador de Python3 en línea – Editor de Python3 en línea – IDE de Python3 en línea – Codificación de Python3 en línea – Practique Python3 en línea – Ejecute Python3 en línea – Compile Python3 en línea

gfg 200x200 min

comando táctil en Linux con ejemplos