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