我有一个Python代码是(或好或坏)检查针对Web服务器上的同一个文件的本地文件。 如果它不存在,它的下载它,如果是的话,它会检查os.stat
最后修改对服务器上的同一个文件的HTTP标头下载的文件的。
问题是,似乎这两个数字都没有,即使他们应该是平等的。 下面的代码:
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 1333350817.0
。
在我看来,这两个应该是相同的,但它们是完全不同的。 修改本地下载的文件的日期是在事实上它被下载到本地机器,而不是在服务器上的最后修改日期。
基本上所有我想要做的就是保持文件的本地缓存(将是一个很大的实际应用程序文件),如果需要下载它。 我是半个意识到网络代理应在默认情况下做到这一点,我运行这些文件存储在一个基本的WAMP的服务器,但我不知道如何将其应用到我的PyQt的应用程序。 有潜在的几十种将需要下载并缓存,并且其中半数很少会发生变化的文件,所以我想确定要检查并抓住这些文件的最快方式。
也许,这甚至不是去了解它的正确方法,所以我所有的耳朵,如果有(更好的/许多其他)的方式来做到这一点。