2015-10-05 48 views
0

我想在地圖中搜索地圖名稱。爲了更清楚我想要什麼,這是地圖結構:在地圖中搜索子地圖

\All data 
    \Submap1 
     \SubSubmap1 
     \some files 
     \Subsubmap2 

    \Submap2 
    \Submap3 

我想要做的是搜索SubSubmap's。我想在子圖的名稱上搜索它們。

我希望你們可以給我一個開始,因爲我找不到任何方式搜索地圖的名稱。

+0

如何將它存儲在python中? –

+0

對於其他程序,我使用了一個路徑,並用for循環遍歷所有文件。據我所知,這是不可能的。特別是如果我需要進入這些地圖的子圖。所有這些地圖和數據都在本地存儲。 – Jayyzz

+0

我會說你需要'os.walk'。 – xbello

回答

0

我們使用explore()函數hereos.walk()的結果保存到字典中。

然後只是迭代名稱並將它們與模式匹配。

我的文件夾:

.\all_data 
.\all_data\sub1 
.\all_data\sub1\subsub1 
.\all_data\sub1\subsub1\some_files 
.\all_data\sub1\subsub2 
.\all_data\sub2 

def explore(starting_path): 
    alld = {'': {}} 

    for dirpath, dirnames, filenames in os.walk(starting_path): 
    d = alld 
    dirpath = dirpath[len(starting_path):] 
    for subd in dirpath.split(os.sep): 
     based = d 
     d = d[subd] 
    if dirnames: 
     for dn in dirnames: 
     d[dn] = {} 
    else: 
     based[subd] = filenames 
    return alld[''] 

data = explore('.') 

for k, v in data['all_data'].iteritems(): 
    if v: 
     for key in v: 
      if 'subsub' in key: 
       print key 

>>> {'all_data': {'sub1': {'subsub1': {'some_files': []}, 'subsub2': []}, 
      'sub2': []}} 
>>> subsub2 
>>> subsub1 

您可以使用此if 'subsub' in key:爲正則表達式等更智慧的驗證。

+0

真棒,作爲魅力^^。感謝您的幫助:)。 – Jayyzz

+0

我試着用這段代碼遍歷searchterms列表,然後所有東西都與我列表中的項目數量相乘。我怎麼能仍然迭代我的searchterms列表(替​​換'if''key'中的'subsub') – Jayyzz