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