У меня две проблемы, которые я пытаюсь решить. 1) Когда я запускаю hashlib md5, я получаю другой результат, чем когда я запускаю md5sum в bash. 2) Запуск программы в python занимает намного больше времени, чем bash.
Кроме того, у меня есть таблица значений md5sum, с которыми я хочу сопоставить этот тестовый файл и другие. Вывод bash в моем тестовом примере соответствует значению, которое я предоставил в таблице. Поэтому в идеале я хотел бы получить результат python, соответствующий этому.
Вот что я пробовал до сих пор:
import os
import hashlib
import gzip
import time
import subprocess
def get_gzip_md5(in_file):
#gets the md5sum value for a given file
hash_md5 = hashlib.md5()
chunk = 8192
with gzip.open(in_file, "rb") as f:
while True:
buffer = f.read(chunk)
if not buffer:
break
hash_md5.update(buffer)
return hash_md5.hexdigest()
t0 = time.process_time()
out = subprocess.run("md5sum test.fastq.gz", shell=True, stdout=subprocess.PIPE)
print(out.stdout)
t1 = time.process_time() - t0
print("Time elapsed:",t1)
t0 = time.process_time()
md5 = get_gzip_md5("test.fastq.gz")
print(md5)
t1 = time.process_time() - t0
print("Time elapsed:",t1)
Вывод:
b'b0a25d66a1a83582e088f062983128ed test.fastq.gz\n'
Time elapsed: 0.007306102000256942
cfda2978db7fab4c4c5a96c61c974563
Time elapsed: 95.02966231200026