python - 对文件夹 python 中的 40k 图像进行排序
问题描述
import os
import time
from PIL import Image as PImage
import pathlib
import glob
try:
path = r"\\x.x.x.x\PVCTData\ELImages\2021_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)
推荐阅读
- python - 如何融化数据框以获取范围之间的所有日期?
- java - Spring MVC maven项目中Tomcat8的插件名称是什么
- c++ - 单独源文件中的 SFINAE 模板专业化
- oracle - 未使用存储过程创建索引 - Oracle
- laravel - 仅显示一条验证错误消息
- javascript - 如何更新地图的状态
- mysql - 使用源数据库创建数据库模式而不使用 mysqldump
- c# - 如何提供实例动态创建的点击按钮的索引?
- python - 如何在python中通过websockets接收数据
- javascript - 为什么 Promise 链在 Node.js 中不起作用?