我正在运行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