Używam 32-bitowych systemów Windows 7 i Python 2.7.Argumenty wiersza poleceń w języku Python (Windows)
Próbuję napisać skrypt Python z linii poleceń, który może być uruchamiany z CMD. Próbuję przypisać wartość do sys.argv [1]. Celem mojego skryptu jest obliczenie wartości skrótu MD5 pliku. Ten plik zostanie wprowadzony po wywołaniu skryptu w wierszu poleceń, a więc sys.argv [1] powinien reprezentować plik, który ma zostać zaszyfrowany.
Oto mój kod poniżej:
import sys
import hashlib
filename = sys.argv[1]
def md5Checksum(filePath):
fh = open(filePath, 'rb')
m = hashlib.md5()
while True:
data = fh.read(8192)
if not data:
break
m.update(data)
return m.hexdigest()
# print len(sys.argv)
print 'The MD5 checksum of text.txt is', md5Checksum(filename)
whenver uruchomić ten skrypt, otrzymuję błąd:
filename = sys.argv[1]
IndexError: list index out of range
zadzwonić do mojego skryptu Pisałem „script.py test.txt " na przykład. Zarówno skrypt, jak i plik źródłowy znajdują się w tym samym katalogu. Przetestowałem len (sys.argv) i wraca on tylko jako zawierający jedną wartość, będącą nazwą skryptu Pythona.
Wszelkie sugestie? Mogę tylko założyć, że to jak wywołuję kod poprzez CMD
Masz tam zwisający otwarty uchwyt pliku. Użyj 'with open (filePath, 'rb') jako fh:' zamiast tego. – wim
zobacz http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t#, aby uzyskać więcej informacji – laike9m