有没有办法删除目录中的所有文件,但只保留每个x文件?
我有一个包含图像的目录,用于拍摄频率为每秒10帧的场景。我想保持每第5帧。 例: 如果文件夹包含0-10的图像 我想保留第5张和第10张图片,并删除其他图片
答案 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个元素时按顺序保留订单