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étodoos.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
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
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