2011-06-01 121 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 
      ]