title: Python requests: download only if newer
body: <p>What is the standard pythonic way to download a new file from a server only if the server copy is newer than the local one? </p>
  
  <p>Either my python-search-fu is very weak today, or one really does needs to roll their own date-time parser and comparer like below. Is there really no <code>requests.header.get_datetime_object('last-modified')</code>? or <code>request.save_to_file(url, outfile, maintain_datetime=True)</code>?</p>
  
  <pre><code>import requests
  import datetime
  
  r = requests.head(url)
  url_time = r.headers['last-modified']
  file_time = datetime.datetime.fromtimestamp(os.path.getmtime(dstFile))
  print url_time  #emits 'Sat, 28 Mar 2015 08:05:42 GMT' on my machine
  print file_time #emits '2015-03-27 21:53:28.175072' 
  
  if time_is_older(url_time, file_time):
      print 'url modtime is not newer than local file, skipping download'
      return
  else:
      do_download(url)
      os.utime(dstFile, url_time) # maintain server's file timestamp
  
  def time_is_older(str_time, time_object):
      ''' Parse str_time and see if is older than time_object.
          This is a fragile function, what if str_time is in different locale?
      '''
      parsed_time = datetime.datetime.strptime(str_time, 
          #Fri, 27 Mar 2015 08:05:42 GMT
          '%a, %d %b %Y %X %Z')
      return parsed_time &lt; time_object
  </code></pre>