15 Temmuz 2009, ÇARŞAMBA
Büyük dosyaların MD5 hash almak Python
Hashlib 2.6/3.0 Python md5 yerine () kullandım ve bir dosya açtım ve hashlib.md5()
fonksiyon içeriği koyarsanız iyi çalıştı.
Sorun boyutlarının RAM boyutunu aşan çok büyük dosyaları ile.
Ne kadar belleğe tüm dosya yükleme olmadan bir dosyanın MD5 hash almak için?
CEVAP
15 Temmuz 2009, ÇARŞAMBA
Uygun büyüklükte parçalar halinde dosya okumak gerekir:
def md5_for_file(f, block_size=2**20):
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
return md5.digest()
NOT: bir dosyayı 'rb' aç - aksi takdirde yanlış sonuç elde edersiniz. açık olduğundan emin Olun
Bir yöntem içinde hepsini yapmak gibi bir şey kullanmak için:
def generate_file_md5(rootdir, filename, blocksize=2**20):
m = hashlib.md5()
with open( os.path.join(rootdir, filename) , "rb" ) as f:
while True:
buf = f.read(blocksize)
if not buf:
break
m.update( buf )
return m.hexdigest()
Güncelleştirme yukarıdaki yorum Frerich Raabe tarafından sağlanan dayalı - ve bu ve Python 2.7.2 windows yükleme doğru tespit test ettim
Ben çapraz kontrol sonuçları kullanılarak 'jacksum' aracı.
jacksum -a md5 <filename>
Bunu Paylaş:
Nasıl Python ile şimdiki zaman almak i...
Python bir listenin son elemanı almak...
Rasgele dize büyük harf ve Python basa...
Python ile bir sınıf adını almak...
Taşınabilir bir şekilde Python için ge...