Python에서 대용량 파일의 MD5 해시 계산
소개
대용량 파일의 크기가 사용 가능한 메모리를 초과하면 문제가 발생할 수 있습니다. 이 기사에서는 전체 파일을 메모리에 로드하지 않고 MD5 해시를 계산하는 실용적인 솔루션을 제시합니다.
솔루션
대용량 파일의 MD5 해시를 계산하려면 다음 내용을 읽어야 합니다. 관리 가능한 덩어리로 묶습니다. 다음 코드 조각은 이를 보여줍니다.
<code class="python">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()</code>
적절한 블록 크기를 지정하여 이 함수는 파일을 청크로 읽고 각 청크로 MD5 해시를 지속적으로 업데이트합니다.
향상됨 코드
프로세스를 간소화하려면 다음과 같은 향상된 코드를 고려하세요.
<code class="python">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()</code>
여기서 파일은 바이너리 모드("rb")로 열려 바이너리 데이터를 올바르게 처리합니다. 그런 다음 함수는 파일을 반복하여 해시를 업데이트하고 최종 해시의 16진수 표현을 반환합니다.
교차 검사 결과
정확성을 보장하려면 교차를 고려하세요. -"jacksum"과 같은 전용 도구로 결과 확인:
jacksum -a md5 <filename>
이것은 비교를 위한 독립적인 MD5 해시 계산을 제공합니다.
위 내용은 메모리 오버로드 없이 Python에서 대용량 파일에 대한 MD5 해시를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!