我目前有以下功能:
def create_image_list(directory):
extensions = ('.jpg', 'jpeg', '.png', '.bmp')
file_list = []
for root, directories, files in os.walk(directory):
for filename in files:
if filename.endswith(extensions):
filepath = os.path.join(root, filename)
file_list.append(filepath)
它遍历给定目录中的每个文件和子目录,并将完整路径放入列表中具有给定扩展名的任何文件。但是,我想忽略某些子目录,例如标记为thumbs
的子目录。我该怎么做?
答案 0 :(得分:3)
您可以在directories
循环内过滤for
对象。引用docs
当topdown为True时,调用者可以就地修改dirnames列表 (可能使用del或slice赋值),而walk()只会递归 进入名称保留在dirnames中的子目录;这可以 用来修剪搜索,强加一个特定的访问顺序,甚至 通知walk()有关调用者创建或重命名的目录 在它再次恢复步行()之前。
类似
for root, directories, files in os.walk(directory):
directories[:] = [d for d in directories if d not in ['thumbs']]
for filename in files:
if filename.endswith(extensions):
filepath = os.path.join(root, filename)
file_list.append(filepath)
要忽略其他目录,您可以将其名称添加到['thumbs']
列表中。