Pergunta

Dada uma lista de objetos FileInfo, como é que eu classifico-los por data? Especificamente eu quero classificá-los por CreationTime em ordem decrescente.

Foi útil?

Solução

A forma Pythonic de fazer isso seria:

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

O método de lista de classificação tem uma função chave que é usado para obter a chave de classificação para cada item.

Outras dicas

DirectoryInfo.GetFiles () retorna uma matriz de FileInfo objetos. Eu criei uma lista genérica para segurar o FileInfo objs e classificados usando um 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top