2011-08-23 41 views
1

我有目錄的列表,如:如何細化目錄的列表中刪除新添加的目錄的子目錄

direc_list = [r'C:\test', r'C:\test2\subdir'] 

然後我想另一個目錄添加到列表中

new_direc = r'C:\test2' 

如何我可以正確刪除我的列表中這個新目錄的任何子目錄嗎?

加入r'C:\test2'後,我的輸出應該讓

direc_list 
>>> [r'C:\test', r'C:\test2'] 

我試圖這樣使用in操作,

for direc in direc_list:   
    if new_direc in direc: 
     direc_list.remove(direc) 

但這種失敗,因爲這個詞「測試」是的'一子test2'

回答

1

也許只需在路徑後添加一個路徑分隔符。

import os 
for direc in direc_list:   
    if direc.startswith(new_direc + os.sep): 
     dir_list.remove(direc) 
+0

謝謝。使用os.sep是有幫助的。 – Kim

2

使用str.startswith(),如:

for direc in direc_list: 
    if direc.startswith(new_direc): 
     dir_list.remove(direc) 

根據輸入,可能希望查看類似於os.path.abspath(路徑)的內容來規範化路徑,以便它們匹配得更好。