Python命令行参数(Windows)

the*_*men 5 python command-line cmd

我正在运行32位Windows 7和Python 2.7.

我正在尝试编写一个可以从CMD运行的命令行Python脚本.我正在尝试为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)
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,我收到一个错误:

filename = sys.argv[1]
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

为了调用我的脚本,我一直在编写"script.py test.txt".脚本和源文件都在同一目录中.我测试了len(sys.argv),它只返回包含一个值,即python脚本名称.

有什么建议?我只能假设我是通过CMD调用代码的

man*_*del 8

您应该在注册表中检查与文件关联的方式是否正确,例如:

[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Python27\\python.exe\" \"%1\" %*"
Run Code Online (Sandbox Code Playgroud)


new*_*ver 2

尝试使用运行脚本python script.py test.txt,您可能会损坏解释器与扩展名的关联.py