que tiene un directorio de 9 imágenes:¿Cómo hacer una lista de una secuencia de imágenes de manera eficiente? comparación de secuencias Numercial en Python
image_0001, image_0002, image_0003 image_0010, image_0011 image_0011-1, image_0011-2, image_0011-3 image_9999
me gustaría ser capaz de enumerarlos de una manera eficiente, como esto (4 entradas para 9 imágenes):
(image_000[1-3], image_00[10-11], image_0011-[1-3], image_9999)
¿Hay alguna forma en python para devolver un directorio de imágenes, de forma breve/clara (sin incluir todos los archivos)?
Por lo tanto, posiblemente algo como esto:
lista de todas las imágenes, clasificar numéricamente, crear una lista (contando cada imagen de la secuencia de inicio). Cuando falta una imagen (crea una nueva lista), continúa hasta que la lista de archivos original haya finalizado. Ahora debería tener algunas listas que contienen secuencias no rotas.
Estoy tratando de facilitar la lectura/descripción de una lista de números. Si tuviera una secuencia de 1000 archivos consecutivos, podría aparecer claramente como archivo [0001-1000] en lugar de archivo ['0001', '0002', '0003', etc.]
Edit1 (basado por sugerencia): dada una lista aplanada, ¿cómo derivaría los patrones glob?
Edit2 Estoy tratando de dividir el problema en pedazos más pequeños. Aquí es un ejemplo de parte de la solución: obras datos1, vuelve Data2 0010 como 64, Data3 (los datos del mundo real) no funciona:
# Find runs of consecutive numbers using groupby. The key to the solution
# is differencing with a range so that consecutive numbers all appear in
# same group.
from operator import itemgetter
from itertools import *
data1=[01,02,03,10,11,100,9999]
data2=[0001,0002,0003,0010,0011,0100,9999]
data3=['image_0001','image_0002','image_0003','image_0010','image_0011','image_0011-2','image_0011-3','image_0100','image_9999']
list1 = []
for k, g in groupby(enumerate(data1), lambda (i,x):i-x):
list1.append(map(itemgetter(1), g))
print 'data1'
print list1
list2 = []
for k, g in groupby(enumerate(data2), lambda (i,x):i-x):
list2.append(map(itemgetter(1), g))
print '\ndata2'
print list2
rendimientos:
data1
[[1, 2, 3], [10, 11], [100], [9999]]
data2
[[1, 2, 3], [8, 9], [64], [9999]]
Por qué 'image_00 [10-11]' 'y no Image_001 [0-1] '? – eumiro
image_00 [10-11] o image_001 [0-1], sí, supongo que es un personaje menos – user178686
Cínicamente: sí, hay una manera. Dudo (pero podría estar equivocado) que haya alguna función de biblioteca para hacer esto. Escriba un código, pregunte algo más específico (por ejemplo, ¿cómo puedo comparar cadenas de similitud) después de que ya hizo 'os.listdir (ruta)', etc. –