sep examples python rmdir

examples - python import os linux



Encontrar directorios vacĂ­os en Python (8)

Esta es la forma más rápida y optimizada para verificar si el directorio está vacío o no.

empty = False for dirpath, dirnames, files in os.walk(dir): if files: print("Not empty !") ; if not files: print("It is empty !" ) empty = True break ;

Las otras respuestas que se mencionan aquí no son rápidas porque, si quieres usar el os.listdir() habitual, si el directorio tiene demasiados archivos, ralentizará tu código y si usas el método os.rmdir( ) para intentar atrapar el error, entonces simplemente eliminará esa carpeta. Puede que no sea algo que quieras hacer si solo quieres comprobar el vacío.

Todas,

¿Cuál es la mejor manera de verificar si hay datos en un directorio antes de eliminarlo? Estoy navegando por un par de páginas para encontrar algunas fotos usando wget y, por supuesto, cada página no tiene una imagen, pero el directorio aún se crea.

dir = ''Files//%s'' % (directory) os.mkdir(dir) cmd = ''wget -r -l1 -nd -np -A.jpg,.png,.gif -P %s %s'' %(dir, i[1]) os.system(cmd) if not os.path.isdir(dir): os.rmdir(dir)

Me gustaría probar para ver si un archivo se dejó caer en el directorio después de que se creó. Si no hay nada allí ... eliminarlo.

Gracias, Adam


¿Qué pasa si usted verifica si el directorio existe y si hay contenido en el directorio ... algo así como:

if os.path.isdir(dir) and len(os.listdir(dir)) == 0: os.rmdir(dir)


Esto ahora se puede hacer de manera más eficiente en Python3, ya que no es necesario crear una lista de los contenidos del directorio solo para ver si está vacío:

import os def is_dir_empty(path): return next(os.scandir(path), None) is None


Iré con EAFP así:

try: os.rmdir(dir) except OSError as ex: if ex.errno == errno.ENOTEMPTY: print "directory not empty"

NB: os.rmdir no elimina el directorio que no está vacío.


Si los directorios vacíos ya están creados, puede colocar este script en su directorio externo y ejecutarlo:

import os def _visit(arg, dirname, names): if not names: print ''Remove %s'' % dirname os.rmdir(dirname) def run(outer_dir): os.path.walk(outer_dir, _visit, 0) if __name__ == ''__main__'': outer_dir = os.path.dirname(__file__) run(outer_dir) os.system(''pause'')


Tratar:

if not os.listdir(dir): print "Empty"

o

if os.listdir(dir) == []: print "Empty"


import os if not os.listdir(dir): os.rmdir(dir)

Estilo LBYL
para EAFP , vea la respuesta de mouad.


import os import tempfile root = tempfile.gettempdir() EMPTYDIRS = [] for path, subdirs, files in os.walk(r'''' + root ): if len( files ) == 0 and len( subdirs ) == 0: EMPTYDIRS.append( path ) for e in EMPTYDIRS: print e