繁体   English   中英

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

[英]Delete every x file in a directory - Python

有没有一种方法可以删除目录中的所有文件,但只保留每个x文件?

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

如果我假设它们都在一个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个元素时按字母顺序保留顺序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM