在一个文件夹python中排序40k图像


import os
import time
from PIL import Image as PImage
import pathlib 
import glob
try:
path = r"\x.x.x.xPVCTDataELImages2021_03_08"
os.chdir(path)
combo = os.listdir(path)
combo.sort(key=os.path.getctime,reverse=True)
print("done")
print(combo)
x=0
loadedimages=[]

for image in combo:
print(image)
img = PImage.open(os.path.join(path,image))
loadedimages.append(img)
x+=1
if x>3:
break
print(loadedimages)
loadedimages[0].show()
loadedimages[1].show()
loadedimages[2].show()
except Exception as ex:
print(ex)

假设我有一个包含40k图片的共享文件夹。我想根据创建日期对图片进行排序,因为我的机器每隔5秒就会向文件夹发送新的图片。上面的代码可以工作,但它太慢了,无法处理大约15分钟的图片,以便排序和显示。我只需要每1小时显示最新的60张图片。

您必须在排序之前过滤文件列表,这样任何您不关心的文件都不会排序。我建议你把你不需要的文件移到另一个位置(组织得当是加分项)。

要做到这一点,在排序之前使用如下命令:

combo = os.listdir()
currentTime = time.time()
timerange = 310
oldestOK = currentTime - timerange
filtered = list()
for file in os.listdir():
if path.getctime(file) > oldestOK:
filtered.append(file)
filtered.sort(key=os.path.getctime, reverse=True)

如果您只需要使用最后60项,为什么不只循环这部分排序呢?
所以不用

for image in combo:
for image in combo[:60]:

当然,我不确定哪一部分需要更长的时间(排序,或处理排序后的图像)。
当然,正如Christian所说的,在你管理完它们之后,尽量把它们安排在更多的子目录中。

最新更新