Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除目录中的每个x文件-Python_Python_Image_Computer Vision - Fatal编程技术网

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

删除目录中的每个x文件-Python,python,image,computer-vision,Python,Image,Computer Vision,有没有办法删除目录中的所有文件,但只保留每个x文件 我有一个包含图像的目录,用于以每秒10帧的频率拍摄的场景。我想保持每5帧。 例子: 如果文件夹包含0-10之间的图像 我想保留第5个和第10个图像,并删除其他图像如果我假设它们都在文件夹中,并且它只包含这些图像(而不包含其他图像),那么这应该在一个复杂的行中起作用: import os [os.remove(os.path.join(folder, img)) for i, img in enumerate(sorted(os.listdir(

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

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

如果我假设它们都在
文件夹中,并且它只包含这些图像(而不包含其他图像),那么这应该在一个复杂的行中起作用:

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)

此外,根据您的评论,我添加了一个
排序
函数,以确保在删除每个第五个元素时按字母顺序排列

它们的名称如何?关于
rm*[12346789].jpg
?非常感谢Mark:)我没有尝试您提出的内容,但我已经使用了下面的脚本,它正在做我想做的事情,谢谢,我尝试了你添加的第一个(列表理解)。它几乎做了相同的事情,但有一些错误,它没有正确地删除所请求的要删除的文件,所以我有从0到149的图像,输出是:0,5,6,25,31,42,50,53,67,69。。。。还有一些人总共有31个文件。正如你所注意到的,它没有正确地计算每5个文件。我需要知道更多关于文件结构的细节,或者删除时出现了什么问题,以获得额外的帮助。只是一个带有149个jpg图像的文件夹正如我在上一篇评论中告诉你的,它没有保留每5个文件,但我想我知道问题所在。我相信它不会按文件名所在位置的升序列出目录中的文件名,只是一个随机列表,因此,删除不正确,现在可以正常工作了。。非常感谢您的支持:)