Python

2010-03-22 5 views
6

'daki dosya sisteminin küme boyutunu belirle Python'daki bir dosyanın "boyutu boyutunda" hesaplamak istiyorum. Bu nedenle, dosyanın depolandığı dosya sisteminin küme boyutunu belirlemek istiyorum.Python

Python'da küme boyutunu nasıl belirlerim? Veya "disketi boyutlarını 10" boyutunda hesaplayan başka bir yerleşik yöntem de çalışır.

os.path.getsize'a baktım, ancak FS'nin blok boyutunu dikkate almayan dosya boyutunu bayt olarak döndürür.

Sana Python öncesi 3.0 sürümü için hedef konum, en azından eğer Kullanım statvfs ... Bu bir işletim sistemi bağımsız bir şekilde yapılabileceğini

cevap

3

UNIX/Linux platformlarında Python'un yerleşik os.statvfs kullanın. Python stdlib sadece haline kısmını ctypes

import ctypes 

sectorsPerCluster = ctypes.c_ulonglong(0) 
bytesPerSector = ctypes.c_ulonglong(0) 
rootPathName = ctypes.c_wchar_p(u"C:\\") 

ctypes.windll.kernel32.GetDiskFreeSpaceW(rootPathName, 
    ctypes.pointer(sectorsPerCluster), 
    ctypes.pointer(bytesPerSector), 
    None, 
    None, 
) 

print(sectorsPerCluster.value, bytesPerSector.value) 

Not: Windows'ta, sürece öyle bir üçüncü taraf kitaplığı bulabilirsiniz, böyle, Win32 fonksiyonu GetDiskFreeSpace aramaya ctypes kullanmanız gerekir 2.5 veya 2.6'da (hangisi olduğunu hatırlayamıyorum).

Bu tür bir şeyi, önce UNIX varyantının var olup olmadığını denetleyen bir işleve koyarım ve (muhtemelen Windows üzerinde çalıştığı için) klişelere geri dönmez. Böylece, Python Windows'ta statvfs uygularsa, bunu kullanır.

2

umuyorum. Ne ile değiştirildiğinden emin değil.

Ayrıca, matematiği kendiniz yapmak zorunda kalacağınızı düşünüyorum, Python, dosyaların "blokları boyutu" nu göstermiyor gibi görünüyor.

+0

Teşekkürler bu işe yarayacak. Öyle görünüyor ki os.statvfs dönüş yapısında bulunan üyeler lehine, yalnızca statvfs sabitlerinin kullanımdan kaldırıldığını görüyorum. –

+0

Ne yazık ki statvfs Windows'ta mevcut değil :( –