我有一个python应用程序,它依赖于客户从网站下载的文件。
该网站不在我的控制之下,并且没有API来检查该文件的“最新版本”。
是否有一种简单的方法可以通过URL访问文件(在python中)并检查它的日期(或大小),而无需每次都将其下载到客户端计算机上?
更新:感谢那些提及“最后修改”日期的人。这是要查看的正确参数。
我想我没有说清楚这个问题。我如何从python脚本执行此操作?我想申请检查文件,然后下载(如果(最后修改日期<当前文件日期)。
答案 0 :(得分:5)
没有可靠的方法来做到这一点。如您所知,文件可以由Web服务器即时创建,并且“此文件的年龄”这个问题没有意义。网络服务器可以选择提供Last-Modified标头,但它可以告诉你它想要什么。
答案 1 :(得分:5)
考虑到“上次修改”可能不存在:
>>> from urllib import urlopen >>> f=urlopen('http://google.com/') >>> i=f.info() >>> i.keys() ['set-cookie', 'expires', 'server', 'connection', 'cache-control', 'date', 'content-type'] >>> i.getdate('date') (2009, 1, 10, 16, 17, 8, 0, 1, 0) >>> i.getheader('date') 'Sat, 10 Jan 2009 16:17:08 GMT' >>> i.getdate('last-modified') >>>
现在你可以比较:
if (i.getdate('last-modified') or i.getheader('date')) > current_file_date: open('file', 'w').write(f.read())
答案 2 :(得分:4)
答案 3 :(得分:2)
在HTTP 1.1中,Content-Disposition header field旨在将此类信息保存在creation-date
参数中(请参阅RFC 2183)。
答案 4 :(得分:1)
也许是问题的更新答案... 例如,我发现此代码适用于excel文件。可以肯定的是,这将取决于服务器决定提供什么。
from urllib.request import urlopen
URL = 'url'
with urlopen(URL) as f:
print(dict(f.getheaders())['Last-Modified'])
# Remove the ['Last-Modified'] if you want to see what is in the header
答案 5 :(得分:0)