У меня есть эта часть кода, которая вычисляет значение MD5 и SHA1 данного файла и представляет его в консоли. Он делает свою работу, однако я получаю сообщение об ошибке:IndexError: индекс индекса вне диапазона [Python]
Traceback (most recent call last):
File "C:\Program Files (x86)\Aptana\workspace\Ipfit5\Semi-Definitief\test6.py",
line 64, in <module>
hash_file(woord)
File "C:\Program Files (x86)\Aptana\workspace\Ipfit5\Semi-Definitief\test6.py",
line 29, in hash_file
hash_file(sys.argv[1]);
IndexError: list index out of range
код выглядит следующим образом:
import sys, hashlib, os
def hash_file(filename): #Calculate MD5 and SHA1 hash values of a given file
# Create hash objects for MD5 and SHA1.
md5_hash = hashlib.md5()
sha1_hash = hashlib.sha1()
filename = r"C:/this.png"
# Read the given file by 2K blocks. Feed blocks
# into into the hash objects by "update(data)" method.
fp = open(filename,'rb')
while 1:
data = fp.read(2048)
if not data:
break
else:
md5_hash.update(data)
sha1_hash.update(data)
fp.close()
print "The MD5 hash of your file is"
print filename,":", md5_hash.hexdigest();
print "The SHA1 hash of your file is"
print filename,":", sha1_hash.hexdigest();
if __name__ == '__main__':
hash_file(sys.argv[1]);
hash_file(woord)
я вызываю функцию для (woord), потому что это что-то определенное позже в сценарии , но это в основном то же изображение, что и имя файла в функции hash_file (filename).
Почему я получаю эту ошибку, когда она показывает мне как значения хэша, так и как я могу избавиться от нее?
EDIT: Я знаю, что есть что-нибудь сделать с, если 'основной' изменения имен ==: hash_file (sys.argv [1]); но я не могу понять это.
Любая помощь очень ценится
действительно, правда, но когда я помещаю этот фрагмент кода вне функции hash_file(), скрипт больше ничего не будет делать. Он просто дает ошибку hash_file (sys.ARGV [1]); IndexError: список индексы вне диапазона – Nick
Это не похоже, чтобы исправить мою проблему, потому что хочет, это какое-то вход из если __name__ == «__main__»: ли вы полагаете, есть способ полного удаления этого кода ? Я видел, что единственная причина, по которой это можно использовать, заключается в том, что его можно использовать как импорт для других модулей, но мне не нужно, чтобы – Nick
, если вы не собираетесь вызывать скрипт с аргументом, вам нужно удалить вызов sys.argv [1], замените его на hash_file (woord) – Cesar