Ich bin mit 32-Bit-Windows 7 und Python 2.7.Python Befehlszeilenargumente (Windows)
Ich versuche, ein Kommandozeilen-Python-Skript zu schreiben, die von CMD ausführen können. Ich versuche, sys.argv [1] einen Wert zuzuweisen. Das Ziel meines Skripts ist es, den MD5-Hash-Wert einer Datei zu berechnen. Diese Datei wird eingegeben werden, wenn das Skript in der Kommandozeile aufgerufen wird, und so, sys.argv [1] sollte die Datei darstellt gehasht werden.
meinen Code unten hier:
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 ich dieses Skript ausführen, ich einen Fehler erhalten:
filename = sys.argv[1]
IndexError: list index out of range
mein Skript zu nennen, ich habe geschrieben „script.py test.txt " beispielsweise. Sowohl das Skript als auch die Quelldatei befinden sich im selben Verzeichnis. Ich habe len (sys.argv) getestet und es kommt nur zurück, wenn es einen Wert enthält, der der Name des Python-Skripts ist.
Irgendwelche Vorschläge? Ich kann nur davon ausgehen, dass ich den Code über CMD
Sie haben eine baumelnde geöffnete Datei dort behandeln. Verwenden Sie 'mit open (filePath, 'rb') als fh:' stattdessen. – wim
siehe http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t# für weitere Informationen – laike9m