我正在運行32位Windows 7和Python 2.7。Python命令行參數(Windows)
我想寫一個命令行Python腳本,可以從CMD運行。我正在嘗試爲sys.argv指定一個值[1]。我的腳本的目的是計算文件的MD5哈希值。當腳本在命令行中被調用時,這個文件將被輸入,所以sys.argv [1]應該表示要被散列的文件。
這裏是我下面的代碼:
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我運行此腳本,我收到一個錯誤:
filename = sys.argv[1]
IndexError: list index out of range
把我的腳本,我一直在寫「script.py的test.txt 「 例如。腳本和源文件都在同一個目錄中。我已經測試了len(sys.argv),它只是回到包含一個值,即python腳本名稱。
有什麼建議嗎?我只能假設這是我通過CMD調用代碼的方式。
你有一個懸空的打開文件句柄。使用'打開(filePath,'rb')作爲fh:'代替。 – wim 2012-03-27 00:11:43
請參閱http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t#瞭解更多信息 – laike9m 2013-12-13 17:06:05