Pregunta

Dada una lista de objetos FileInfo, ¿cómo los ordeno por fecha? Específicamente quiero ordenarlos por CreationTime en orden descendente.

¿Fue útil?

Solución

La forma pitónica de hacer esto sería:

fileInfos = list(DirectoryInfo(path).GetFiles())
fileInfos.sort(key=lambda f: f.CreationTime, reverse=True)

El método de clasificación de lista toma una función clave que se usa para obtener la clave de clasificación para cada elemento.

Otros consejos

DirectoryInfo.GetFiles () devuelve una matriz de objetos FileInfo. Creé una lista genérica para contener los objs de FileInfo y la ordené usando un comparador personalizado.

logDir = r"C:\temp"
fileInfosArray = DirectoryInfo(logDir).GetFiles("*.log")
fileInfosList = List[FileInfo]()
fileInfosList.AddRange(fileInfosArray)
fileInfosList.Sort(FileInfoCompareCreationTimeDesc)
for fileInfo in fileInfosList:
    print fileInfo.CreationTime, fileInfo.LastAccessTime, fileInfo.LastWriteTime, fileInfo.Name

# comparison delegate for FileInfo objects: sort by CreationTime Descending
def FileInfoCompareCreationTimeDesc(fileInfo1, fileInfo2):
    return fileInfo2.CreationTime.CompareTo(fileInfo1.CreationTime)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top