2011-06-01 119 views
0

我正在使用Python中的備份腳本,並希望它能夠忽略文件夾。因此,我有一個要忽略的文件夾列表,例如['Folder 1', 'Folder3']。我正在使用os.walk,並試圖讓它跳過忽略的文件夾列表中的任何文件夾,或者將任何忽略的文件夾作爲父目錄。有沒有人以前做過這件事,我見過的例子似乎並沒有工作,並最終創建一個空文件夾?確定文件夾是否在文件路徑中

+0

看到這個答案的http: //stackoverflow.com/questions/925056/a-python-walker-that-c​​an-ignore-directories/925291#925291 – 2011-06-01 11:07:02

回答

2

the docs

自上而下True,調用者可以修改dirnames中列表就地(可能使用del或切片分配),並walk()只會遞歸到他們的名字留在子目錄在dirnames;這可以用來修剪搜索,施加特定的訪問順序,或者甚至在它再次恢復walk()之前通知walk()關於呼叫者創建或重命名的目錄。

因此,遍歷您的列表並刪除匹配的條目。

0

下面的語句

folders = [path+'/'+dir for (path,dirs,files) in os.walk(base) 
            for dir in dirs 
            if dir not in ['Folder 1', 'Folder3', ...]] 

變量folders後應包含的文件夾,你有興趣

EDIT1:... + '/' + ...作品只是在類Unix操作系統。我認爲這是一個os.path.join它做相同的工作平臺indepentently

EDIT2:如果您要排除的目錄的所有子目錄被排除在外,你可以嘗試以下方法:

exclusions = ['Folder 1', 'Folder3', ...] 
folders = [path+'/'+dir for (path,dirs,files) in os.walk(base) 
         if not any([f in path for f in exclusions]) 
         for dir in dirs 
         if dir not in exclusions 
      ]