20 lines
754 B
Python
20 lines
754 B
Python
import hashlib
|
|
import time
|
|
from pathlib import PurePosixPath, Path, PureWindowsPath
|
|
|
|
def windows_to_linux_path(windows_path):
|
|
return PureWindowsPath(windows_path).as_posix()
|
|
|
|
def compute_sha256(file_path, chunk_size=1024 ** 2):
|
|
# Create a new sha256 hash object
|
|
start = time.time()
|
|
sha256 = hashlib.sha256()
|
|
print("start compute sha256 for", file_path)
|
|
# Open the file in binary mode
|
|
with open(file_path, 'rb') as file:
|
|
# Read the file in chunks to handle large files efficiently
|
|
while chunk := file.read(chunk_size):
|
|
sha256.update(chunk)
|
|
print("finish compute sha256 for", file_path, f"time: {time.time() - start}")
|
|
# Return the hexadecimal digest of the hash
|
|
return sha256.hexdigest() |