>  기사  >  백엔드 개발  >  메모리 제한 없이 Python에서 대용량 파일의 MD5 해시를 계산하는 방법은 무엇입니까?

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

Patricia Arquette
Patricia Arquette원래의
2024-10-20 11:03:30629검색

How to Compute MD5 Hashes of Large Files in Python Without Memory Limitations?

Python에서 대용량 파일의 MD5 해시 계산

Python의 hashlib 모듈을 사용하여 파일의 MD5 해시를 계산하는 것은 소규모 파일의 경우 간단합니다. 사용 가능한 메모리를 초과하는 대용량 파일의 경우 실용적이지 않습니다. 이 기사에서는 이 문제에 대한 실용적인 솔루션을 살펴봅니다.

메모리 제한을 우회하려면 hashlib에 전체 파일이 아닌 파일의 일부에 대한 액세스 권한을 한 번에 부여해야 합니다. 다음 Python 함수는 지정된 크기의 청크로 파일을 읽고 부분 MD5 해시를 누적합니다. block_size 매개변수에 적합한 크기(기본값: 2^20)를 설정함으로써 RAM 제한을 넘어 파일 크기를 효과적으로 관리합니다.

<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>

올바른 결과를 보장하려면 파일을 'rb'를 사용하여 바이너리 모드로 여는 것이 좋습니다.

보다 포괄적인 접근 방식을 위해서는 도우미 함수가 필요한 모든 단계를 캡슐화할 수 있습니다.

<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>

jacksum과 같은 도구를 사용하여 결과를 교차 검사하면 계산된 MD5 해시의 정확성이 보장됩니다. .

위 내용은 메모리 제한 없이 Python에서 대용량 파일의 MD5 해시를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.