2009-03-04 24 views
1

içinde nasıl sıralanacağı FileInfo nesnelerinin bir listesi verildiğinde, bunları tarihe göre nasıl sıralarım? Özellikle bunları CreationTime ile azalan sırada sıralamak istiyorum.FileInfo listesinin IronPython

cevap

2

olacağını Bunu yapmanın Pythonic yolu:

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

liste sıralama yöntemi her öğe için sıralama anahtarı almak için kullanılan bir anahtar işlevi alır.

1

DirectoryInfo.GetFiles() bir dizi FileInfo nesnesi döndürür. FileInfo objs tutmak için genel bir liste oluşturdum ve özel bir karşılaştırıcı kullanarak sıralanmış.

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)