Tengo una función que se llama recursivamente y quiero saber el nivel actual de recursión. El siguiente código muestra el método que estoy usando para calcularlo, pero no está dando los resultados esperados.Encontrar el nivel de llamada de recursión en python
E.g. : Para encontrar el nivel de recursión para una ruta del sistema:
import os
funccount = 0
def reccount(src):
global funccount
print "Function level of %s is %d" %(src, funccount)
def runrec(src):
global funccount
funccount = funccount + 1
lists = os.listdir(src)
if((len(lists) == 0)):
funccount = funccount - 1
reccount(src)
for x in lists:
srcname = os.path.join(src, x)
if((len(lists) - 1) == lists.index(x)):
if (not(os.path.isdir(srcname))):
funccount = funccount - 1
if os.path.isdir(srcname):
runrec(srcname)
runrec(C:\test)
Problema: Dada una ruta de directorio, imprimir el nivel de recursividad para el directorio
estructura de directorios es: En mi estructura de directorios, voy a llamar a la función "reccount (Test)" (se llamará a la función con ruta a MainFolder). Quiero saber el nivel de llamada de recurrencia para cada carpeta. (Sólo Directorio)
Test:
|----------doc
|----------share
|----------doc
|----------file1
|----------bin
|----------common
|----------doc
|----------extras
|----------file2
cuando llamo el procedimiento, me sale el siguiente resultado:
Function level of C:\test is 1
Function level of C:\test\bin is 2
Function level of C:\test\bin\common is 3
Function level of C:\test\bin\common\doc is 3
Function level of C:\test\doc is 3
Function level of C:\test\extras is 3
Function level of C:\test\share is 4
Function level of C:\test\share\doc is 5
Como se puede ver, cuando imprime los resultados de bin/common/doc, imprime 3 en vez de 4 y todos los resultados posteriores son incorrectos
Por qué recuento negativo? – sarbjit