2016-12-29 36 views
1

我使用python 2.7並試圖搜索文件夾不是文件在Python中加快搜索文件夾路徑?

我們爲每個項目都有具體的項目編號,並且evry文件將進入任何項目下的項目文件夾。所以,如果它存在或有效,我們必須搜索項目文件夾。

我的腳本可以找到特定文件夾,但它需要較長的時間(約11至13分鐘才能完成的過程)

我想和大家分享我的腳本的工作有一些更好的想法。

import os        

path=r"F:\Projekte" 

def find_directory(): 
    for root, dirs, files in os.walk(path): 
     for i in dirs: 
      if i=="A9901001": 
       print root 

find_directory() 

回答

1

爲什麼不執行的linux find命令或在python tree命令(FIND在窗戶的情況下)。諸如find之類的命令將使用系統索引,並可能提供更快的結果。

喜歡的東西: - find . -type d -name "A9901001"

Python代碼應該是這個樣子

import os 
paths = os.system('find . -type d -name "A9901001"') 

注: - 按照只有當你得到了一些性能,因爲您最初的做法肯定是更優雅的這個解決方案。

+0

我正在使用Windows,並運行@ hspandher建議的代碼。它返回我1。是否有可能獲得完整路徑? –

1

爲什麼不只是這個?

def find_directory(): 
    for root, dirs, files in os.walk(path): 
     if "A9901001" in dirs: 
      print(root, "A9901001") 

,如果你有一個蔡斯使用python3:有os.scandir它做類似的事情,但os.walk是NTFS快了很多。

+0

我的python與ArcGIS 10.4鏈接,我正在使用其實用程序開發ArcGIS工具。有我的文件夾後可以停止循環? –

+0

哦,我明白了。不同的選擇是在後臺運行目錄掃描「離線」;收集一種數據庫中的目錄名稱(例如,只是一個python字典 - 或sqlite或其他)。從那裏得到結果應該幾乎是瞬間的。您必須不時「走路」目錄樹以更新「數據庫」。 –

相關問題