删除第 2 到第 9 个文件并循环延时 Python
Delete the 2nd to 9th file and loop for a timelapse Python
我有一个包含 1000 张照片的文件夹,我想对其进行延时摄影。这些照片每 60 秒拍摄一次,我想做一个 10 分钟的间隔时间。所以我需要删除每 2 到 9 张照片并让它循环播放。例如,给定一个文件夹中的 1000 张照片,我希望脚本保留照片 1、10、20、30 等等。在此脚本结束时,该文件夹应仅包含 100 张照片。
以下代码删除每“第 10”张照片,这与我想要的不完全一样:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
l = os.listdir(dir_to_clean)
for n in l[::10]:
os.unlink(dir_to_clean + '/' + n)
如何修改此代码,使其每隔 2-9 张照片删除一次?如果该文件夹没有偶数个文件(例如,如果它有 1005 个文件),它应该仍然能够 运行。
首先,你不应该依赖底层的 OS 索引来为你排序——你应该自己对图像列表进行排序(希望它们的名字是按字典顺序排列的)。
其次,排序后,只需枚举您的列表,不要删除每 10 个项目,例如:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
images = sorted(os.listdir(dir_to_clean))
for i, image in enumerate(images):
if i % 10 != 0:
os.remove(os.path.join(dir_to_clean, image))
对于像这样的图像列表:["image000.jpg", "image001.jpg", "image002.jpg", "image003.jpg", ... "image035.jpg"]
这将删除除 image000.jpg
、image010.jpg
、image020.jpg
和 image030.jpg
之外的所有图像。
你想把所有的第一个和最后一个都保持在 10 分钟的范围内,所以我会这样做:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
images = sorted(os.listdir(dir_to_clean))
for i, x in enumerate(images):
#print i, i % 10
if i % 10 == 0 or i % 10 == 9:
print("Keeping : " + str(x))
else:
print("Deleting: " + str(x))
os.remove(os.path.join(dir_to_clean, image))
我有一个包含 1000 张照片的文件夹,我想对其进行延时摄影。这些照片每 60 秒拍摄一次,我想做一个 10 分钟的间隔时间。所以我需要删除每 2 到 9 张照片并让它循环播放。例如,给定一个文件夹中的 1000 张照片,我希望脚本保留照片 1、10、20、30 等等。在此脚本结束时,该文件夹应仅包含 100 张照片。
以下代码删除每“第 10”张照片,这与我想要的不完全一样:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
l = os.listdir(dir_to_clean)
for n in l[::10]:
os.unlink(dir_to_clean + '/' + n)
如何修改此代码,使其每隔 2-9 张照片删除一次?如果该文件夹没有偶数个文件(例如,如果它有 1005 个文件),它应该仍然能够 运行。
首先,你不应该依赖底层的 OS 索引来为你排序——你应该自己对图像列表进行排序(希望它们的名字是按字典顺序排列的)。
其次,排序后,只需枚举您的列表,不要删除每 10 个项目,例如:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
images = sorted(os.listdir(dir_to_clean))
for i, image in enumerate(images):
if i % 10 != 0:
os.remove(os.path.join(dir_to_clean, image))
对于像这样的图像列表:["image000.jpg", "image001.jpg", "image002.jpg", "image003.jpg", ... "image035.jpg"]
这将删除除 image000.jpg
、image010.jpg
、image020.jpg
和 image030.jpg
之外的所有图像。
你想把所有的第一个和最后一个都保持在 10 分钟的范围内,所以我会这样做:
import os
dir_to_clean = '/Users/myname/Desktop/TBD'
images = sorted(os.listdir(dir_to_clean))
for i, x in enumerate(images):
#print i, i % 10
if i % 10 == 0 or i % 10 == 9:
print("Keeping : " + str(x))
else:
print("Deleting: " + str(x))
os.remove(os.path.join(dir_to_clean, image))