删除目录中的每个x文件 - Python

时间:2018-06-06 11:31:53

标签: python image computer-vision

有没有办法删除目录中的所有文件,但只保留每个x文件?

我有一个包含图像的目录,用于拍摄频率为每秒10帧的场景。我想保持每第5帧。 例: 如果文件夹包含0-10的图像 我想保留第5张和第10张图片,并删除其他图片

1 个答案:

答案 0 :(得分:0)

如果我假设它们都在folder并且它只包含那些图像(而不是其他任何东西)那么这应该在一个复杂的行中起作用:

import os
[os.remove(os.path.join(folder, img)) for i, img in enumerate(sorted(os.listdir(folder))) if i % 5 != 0]

无论它们如何命名都应该有效,并且只保留每个第5个文件(必要时更改数字5)。但是,要非常小心才能提供正确的文件夹,并确保它不包含任何您不想删除的内容。如果是,请在删除之前先过滤列表。

如果您对列表理解感到不舒服或者代码难以理解(有点像),则上面的较长版本是:

import os
image_list = sorted(os.listdir(folder))
for i, img in enumerate(image_list):
    if i % 5 != 0:
        img_path = os.path.join(folder,img)
        os.remove(img_path)

另外,根据您的评论,我添加了sorted函数,以确保在删除每个第5个元素时按顺序保留订单