Ho una funzione chiamata in modo ricorsivo e desidero conoscere il livello corrente di ricorsione. Sotto codice mostra il metodo che sto usando per calcolarlo, ma non sta dando i risultati attesi.Trovare il livello di chiamata di ricorsione in python
E.g. : Per trovare il livello di ricorsione per un percorso di 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: Dato un percorso di directory, stampare il livello di ricorsione per la directory
struttura di directory è: Nella mia struttura di directory, chiamerò function "reccount (Test)" (la funzione verrà richiamata con il percorso su MainFolder). Voglio conoscere il livello di chiamata di ricorsione per ogni cartella. (Solo directory)
Test:
|----------doc
|----------share
|----------doc
|----------file1
|----------bin
|----------common
|----------doc
|----------extras
|----------file2
quando chiamo la procedura, ottengo il seguente risultato:
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
Come si può vedere, per la stampa dei risultati per bin/common/doc, stampa 3 invece di 4 e tutti i risultati successivi sono errati
conteggio Perché negativo? – sarbjit