Python 上次修改的下载文件与其HTTP头不匹配
我有一段Python代码,它(无论好坏)将本地文件与web服务器上的同一文件进行检查。如果它不在那里,它将下载它,如果它在那里,它将根据服务器上相同文件的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
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))