确定文件夹是否在文件路径中

时间:2011-06-01 11:02:51

标签: python regex filepath

我正在使用Python编写备份脚本,并希望它能够忽略文件夹。因此,我有一个要忽略的文件夹列表,即['Folder 1', 'Folder3']。我正在使用os.walk,并试图让它跳过被忽略的文件夹列表中的任何文件夹,或者将任何被忽略的文件夹作为父目录。有没有人之前做过这个,因为我见过的例子似乎不起作用,并且经常最终创建一个空文件夹?

2 个答案:

答案 0 :(得分:2)

来自the docs

  

topdown True时,调用者可以就地修改dirnames列表(可能使用del或切片分配),walk()只会递归到名称保留在 dirnames 中的子目录;这可用于修剪搜索,强制执行特定的访问顺序,甚至可以通知walk()调用者在再次恢复walk()之前创建或重命名的目录。

因此,遍历您的列表并删除匹配的条目。

答案 1 :(得分: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独立完成相同的工作平台

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
          ]