Me pregunto si podría tener algunos ojos frescos en este script de python. Funciona bien con archivos de tamaño pequeño y mediano, pero con archivos grandes (de 4 a 8 GB más o menos) se bloquea inexplicablemente después de ejecutarse durante un par de minutos.Python se cuelga al calcular SHA-1 hashs para archivos de gran tamaño en el sistema operativo Windows
O:
import sys
import msvcrt
import hashlib
#Print the file name (and its location) to be hashed
print 'File: ' + str(sys.argv[1])
#Set "SHA1Hash" equal to SHA-1 hash
SHA1Hash = hashlib.sha1()
#Open file specified by "sys.argv[1]" in read only (r) and binary (b) mode
File = open(sys.argv[1], 'rb')
#Get the SHA-1 hash for the contents of the specified file
SHA1Hash.update(File.read())
#Close the file
File.close()
#Set "SHA1HashBase16" equal to the hexadecimal of "SHA1Hash"
SHA1HashBase16 = SHA1Hash.hexdigest()
#Print the SHA-1 (hexadecimal) hash of the file
print 'SHA-1: ' + SHA1HashBase16
#Make a blank line
print ' '
#Print "Press any key to continue..."
print 'Press any key to continue...'
#"Press any key to continue..." delay
char=0
while not char:
char=msvcrt.getch()
* Actualizado *
Trabajando script en Python para el cálculo de hash SHA-1 de archivos de gran tamaño. Gracias a Ignacio Vazquez-Abrams por señalar lo que estaba mal ya Tom Zych por el código.
Para utilizar simplemente arrastrar y soltar el archivo se hash en la parte superior del guión. Alternativamente, puede utilizar ya sea un símbolo del sistema con el uso de:
SHA-1HashGen.py Path&File
Fueron SHA-1HashGen.py es el nombre de archivo del script y la ruta del archivo & es la ruta y el nombre del archivo que se va hash.
O suelte la secuencia de comandos en la carpeta SendTo (en el sistema operativo Windows; shell: sendto) para obtenerla como una opción de clic derecho.
Defina "bloqueos". –
La ventana del terminal simplemente se cierra instantáneamente en el medio del cálculo del hash. – Peter
Por lo que vale: debe intentar iniciar su script de python desde un símbolo del sistema. De esa forma obtendrá más información sobre el error. –