Python Command Line Arguments (Windows)
Question: I am running 32-bit Windows 7 and Python 2.7.

I am trying to write a command line Python script that can run from CMD. I am
trying to assign a value to sys.argv[1]. The aim of my script is to calculate
the MD5 hash value of a file. This file will be inputted when the script is
invoked in the command line and so, sys.argv[1] should represent the file to
be hashed.

Here's my code below:

    
    
    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 I run this script, I receive an error:

    
    
    filename = sys.argv[1]
    IndexError: list index out of range
    

To call my script, I have been writing "script.py test.txt" for example. Both
the script and the source file are in the same directory. I have tested
len(sys.argv) and it only comes back as containing one value, that being the
python script name.

Any suggestions? I can only assume it is how I am invoking the code through
CMD


Answer: You should check that in your registry the way you have associated the files
is correct, for example:

    
    
    [HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
    @="\"C:\\Python27\\python.exe\" \"%1\" %*"
    

