title: How to write a download progress indicator in Python?
body: <p>I am writing a little application to download files over http (as, for example, described <a href="https://stackoverflow.com/questions/22676/how-do-i-download-a-file-over-http-using-python#22776">here</a>).</p>
  
  <p>I also want to include a little download progress indicator showing the percentage of the download progress.</p>
  
  <p>Here is what I came up with:</p>
  
  <pre>
      sys.stdout.write(rem_file + "...")    
      urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)
  
      def dlProgress(count, blockSize, totalSize):
        percent = int(count*blockSize*100/totalSize)
        sys.stdout.write("%2d%%" % percent)
        sys.stdout.write("\b\b\b")
        sys.stdout.flush()
  </pre>
  
  <p>Output: MyFileName... 9%</p>
  
  <p>Any other ideas or recommendations to do this? </p>
  
  <p>One thing that's somewhat annoying is the blinking cursor in the terminal on the first digit of the percentage. Is there a way to prevent this? Is there a way to hide the cursor?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Here a better alternative using a global variable for the filename in dlProgress and the '\r' code:</p>
  
  <pre>
      global rem_file # global variable to be used in dlProgress
  
      urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)
  
      def dlProgress(count, blockSize, totalSize):
        percent = int(count*blockSize*100/totalSize)
        sys.stdout.write("\r" + rem_file + "...%d%%" % percent)
        sys.stdout.flush()
  </pre>
  
  <p>Output: MyFileName...9% </p>
  
  <p>And the cursor shows up at the END of the line. Much better.</p>