2017-04-27 66 views
0

我想要一個標準的python解決方案,用於linux中的maxdepth選項。我可以使用os.walk()模擬find命令,但我想限制代碼級別的深度。我不想在我的代碼中使用subprocessPopen如何模擬Linux的find命令的`maxdepth`選項到python

+2

我從來沒有聽說過在Linux中'maxdepth'命令。你是指'find'命令的'-maxdepth'選項嗎? –

+0

@MarceloCantos是的,它是。如果你想要,你可以編輯問題來反映這一點。 –

+1

這是你的問題。 –

回答

0

您可以遞歸遍歷所有路徑,直到達到一定的深度。這個解決方案不是特別有效,但它應該讓你開始(的Python 3.3或更新版本):

def find(path, maxdepth=-1, depth=0): 
    path = "%s/" % path if path[-1] != "/" else path 
    for f in os.listdir(path): 
     p = "%s%s" % (path, f) 
     yield p 
     try: 
      if (depth < maxdepth or maxdepth == -1) and os.path.isdir(p): 
       yield from find(p, maxdepth, depth + 1) 
     except OSError: 
      pass 

用法:

find(path, maxdepth) 
# maxdepth=-1 means infinite depth (default)