Sono in esecuzione Windows 7 a 32 bit e Python 2.7.Argomenti della riga di comando Python (Windows)
Sto provando a scrivere uno script Python da riga di comando che può essere eseguito da CMD. Sto cercando di assegnare un valore a sys.argv [1]. Lo scopo del mio script è calcolare il valore hash MD5 di un file. Questo file verrà immesso quando lo script viene richiamato nella riga di comando e quindi sys.argv [1] dovrebbe rappresentare il file da sottoporre a hash.
Ecco il mio codice qui sotto:
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 ho eseguito questo script, ricevo un errore:
filename = sys.argv[1]
IndexError: list index out of range
Per chiamare il mio script, ho scritto "test.txt script.py " per esempio. Sia lo script che il file sorgente si trovano nella stessa directory. Ho testato len (sys.argv) e ritorna solo come contenente un valore, che è il nome dello script python.
Qualche suggerimento? Posso solo supporre che sia come sto invocando il codice tramite CMD
Hai un handle di file aperto penzolante lì. Usa 'con open (filePath, 'rb') come fh:' invece. – wim
vedere http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t# per ulteriori informazioni – laike9m