Python 上次修改的下载文件与其HTTP头不匹配

Python 上次修改的下载文件与其HTTP头不匹配,python,http,caching,Python,Http,Caching,我有一段Python代码,它(无论好坏)将本地文件与web服务器上的同一文件进行检查。如果它不在那里,它将下载它,如果它在那里,它将根据服务器上相同文件的HTTP头检查下载文件的os.stat上次修改 问题是,这两个数字似乎并不相等,即使它们应该相等。代码如下: from urllib import urlretrieve from urllib2 import Request, urlopen from time import strftime, localtime, mktime, strp

我有一段Python代码,它(无论好坏)将本地文件与web服务器上的同一文件进行检查。如果它不在那里,它将下载它,如果它在那里,它将根据服务器上相同文件的HTTP头检查下载文件的
os.stat
上次修改

问题是,这两个数字似乎并不相等,即使它们应该相等。代码如下:

from urllib import urlretrieve
from urllib2 import Request, urlopen
from time import strftime, localtime, mktime, strptime
from os import stat, path

destFile = "logo3w.png"
srvFile = "http://www.google.com/images/srpr/logo3w.png"

if path.exists(destFile):
    localLastModified = stat(destFile).st_mtime
    req = Request(srvFile)
    url_handle = urlopen(req)
    headers = url_handle.info()                        
    srvLastModified = headers.getheader("Last-Modified")
    srvLastModified = mktime(strptime(srvLastModified,
      "%a, %d %b %Y %H:%M:%S GMT"))
    print localLastModified, srvLastModified

else:
    urlretrieve(srvFile, destFile)
print
语句(如果运行代码两次)的返回值为
1334527395.26 133350817.0

在我看来,这两个应该是一样的,但它们大不相同。本地下载的文件的修改日期实际上是下载到本地计算机的日期,而不是服务器上最后一次修改的日期

基本上,我所要做的就是保留文件的本地缓存(在实际应用程序中会有很多文件),必要时下载它。我知道web代理在默认情况下应该这样做,我正在运行一个存储这些文件的基本WAMP服务器,但我不确定如何将其应用于我的PyQt应用程序。可能有几十个文件需要下载和缓存,其中大约一半几乎不会更改,因此我正在尝试确定检查和获取这些文件的最快方法

也许这甚至不是正确的方法,所以我洗耳恭听是否有(更好/更多的其他)方法可以做到这一点。

只需下载文件;它不复制修改日期。您必须使用以下方式手动执行此操作:


对于“几十个”文件来说,速度真的不是问题——任何东西都足够快。顺便说一句,如果你想确定他们的内容是否有变化,你也可以对他们的内容进行散列。谢谢,这就是诀窍。还应该注意的是,我获取标题信息的url的方式实际上是下载整个内容,所以我什么也得不到。然而,通过查看,我能够在不下载整个文件的情况下检索到正确的信息。
import os

# current code
else:
    headers = urlretrieve(srvFile, destFile)[1]
    lmStr = headers.getheader("Last-Modified")
    srvLastModified = mktime(strptime(lmStr, "%a, %d %b %Y %H:%M:%S GMT"))
    os.utime(destFile, (srvLastModified, srvLastModified))