私は再帰的に呼び出される関数を持っており、再帰の現在のレベルを知りたいと思います。以下のコードは、私がそれを計算するために使用しているメソッドを示していますが、期待される結果が得られていません。Pythonで再帰呼び出しのレベルを見つける
など。
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)
問題:ディレクトリのパスを指定すると、ディレクトリの再帰のレベルを印刷
ディレクトリ構造は次のとおりです:システムパスのための再帰レベルを見つけるには、私のディレクトリ構造で 、私が呼び出されます関数 "reccount(Test)"(関数はMainFolderへのパスで呼び出されます)。私は各フォルダの再帰呼び出しのレベルを知りたい。あなたが見ることができるように、それはビン/共通/ docに関する結果を出力するとき、それは代わりに3を印刷し、
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
:私は、プロシージャを呼び出すときに(ディレクトリのみ)
Test:
|----------doc
|----------share
|----------doc
|----------file1
|----------bin
|----------common
|----------doc
|----------extras
|----------file2
、私は次のような結果を得ます4以降のすべての結果が間違っている
なぜ負の数:
そのように、あなたはグローバル変数を必要としませんか? – sarbjit