
Situación: Tengo un script de Python que contará de forma recursiva y por separado el número total de archivos y directorios. A continuación se muestra el código:
def traverse(top):
filecount = 0
dircount = 0
for root, dirs, files in os.walk(top):
for f in files:
if dirs: dircount += 1
elif files: filecount += 1
else:
print("Error")
break
print("Num of dir: " + dircount)
print("Num of files: " + filecount)
Problema: obtengo una cantidad diferente de directorios y archivos casi cada vez que ejecuto el código.
Pregunta: ¿Le importaría sugerir una razón por la cual el número de archivos y directorios fluctuará? ¿Quizás es así como funciona Linux?
Información adicional: Sólo quiero asegurarme, ya que esta parte de mi script es muy importante para todo el programa.
Respuesta1
Un sistema Unix en ejecución creará archivos y directorios temporales de vez en cuando durante el funcionamiento normal.
Es probable que simplemente abrir un archivo en un editor o enviar un correo electrónico cree uno o dos archivos temporales, y navegar por la web puede crear y eliminar cientos de archivos en un corto período de tiempo. Además, un entorno de escritorio gráfico puede realizar almacenamiento en caché y otras cosas que normalmente no notas, lo que crea y elimina archivos temporales.
Dependiendo de cuál sea su directorio principal, es posible que cubra directorios que tienden a cambiar mucho, como /tmp
y todos los directorios bajo /var
y su directorio de inicio.
Respuesta2
dirs es una lista de nombres de directorios en el directorio actual (raíz) y files es una lista de nombres de archivos en el directorio actual.
Creo que quieres algo más como esto:
def traverse(top):
filecount = 0
dircount = 0
for root, dirs, files in os.walk(top):
dircount += len(dirs)
filecount += len(files)
print("Num of dir: " + dircount)
print("Num of files: " + filecount)