2009-01-09 48 views
1

我有一个python应用程序,它依赖于客户端从网站下载的文件。如何获取网上文件的创建日期(使用Python)?

该网站不在我的控制之下,没有API来检查文件的“最新版本”。

是否有一种简单的方式通过URL访问文件(在Python中),并检查它的日期(或大小),而不必每次都下载到客户机?

更新:感谢那些提到“最后修改”日期的人。这是看待的正确参数。

我想我没有足够好地阐述这个问题。我如何从python脚本执行此操作?我想申请检查文件,然后下载它(如果最后修改日期<当前文件日期)。

回答

4

检查Last-Modified标题。

编辑:尝试urllib2

编辑2:这short tutorial应该给你一个很好的感觉,实现你的目标。

+0

另外你可能要考虑使用的ETag头(以与在请求中发送If-None-Match标头一起) – 2009-01-10 17:59:29

5

没有可靠的方法来做到这一点。对于你所知道的,这个文件可以通过Web服务器即时创建,而“这个文件有多大”这个问题没有意义。网络服务器可以选择提供Last-Modified标题,但它可以告诉你任何它想要的。

0

我建立了一个基于etags的工具。听起来很像你所描述的:

pfetch是一个扭曲的工具,可以按计划执行此操作,并且可以运行多个URL并在更改后触发事件(下载后)。这很简单,但仍然可能比你想要的更复杂。然而,正是你所要求的。

所以,请选择。 :)

3

要考虑到“最后修改”可能不存在:

 
>>> 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()) 
相关问题