메모리 오버로드 없이 Python에서 대용량 파일에 대한 MD5 해시를 계산하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-20 10:13:30
원래의
780명이 탐색했습니다.

How to Calculate MD5 Hashes for Large Files in Python without Memory Overloading?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿