title: Python Command Line Arguments (Windows)
body: <p>I am running 32-bit Windows 7 and Python 2.7.</p>
  
  <p>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.</p>
  
  <p>Here's my code below:</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>Whenver I run this script, I receive an error:</p>
  
  <pre><code>filename = sys.argv[1]
  IndexError: list index out of range
  </code></pre>
  
  <p>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.</p>
  
  <p>Any suggestions? I can only assume it is how I am invoking the code through CMD</p>