Ale*_*ara 1 python python-2.7 python-3.x
我正在尝试创建一种方法,仅当文件比已下载到我的计算机的版本最新时,才允许我从服务器下载文件(使用 HTTP)。
我找到了一种方法来获取上次在服务器上修改文件的时间(至少是服务器认为它被修改的最后一次):
u = urllib2.urlopen(url)
meta = u.info()
print("Last Modified: " + str(meta.getheaders("Last-Modified")))
Run Code Online (Sandbox Code Playgroud)
现在的问题是如何使用此信息与我计算机上已有的文件进行比较,并查看服务器上的版本是否比我计算机上保存的版本新。
我尝试使用python-wget图书馆;然而,它没有帮助。它正在下载所有内容,甚至没有覆盖文件(它正在创建新文件),所以我意识到该库不检查时间戳。
解决这个问题的最佳方法是什么?
考虑os.path.getmtime获取计算机文件的修改日期。
但是您需要将 url 标头的修改时间转换为时间戳,以便在计算机和服务器文件之间进行比较:
import os, datetime, time
u = urllib2.urlopen(url)
meta = u.info()
print("Last Modified: " + str(meta.getheaders("Last-Modified")))
# CONVERTING HEADER TIME TO UTC TIMESTAMP
# ASSUMING 'Sun, 28 Jun 2015 06:30:17 GMT' FORMAT
meta_modifiedtime = time.mktime(datetime.datetime.strptime( \
meta.getheaders("Last-Modified"), "%a, %d %b %Y %X GMT").timetuple())
file = 'C:\Path\ToFile\somefile.xml'
if os.path.getmtime(file) > meta_modifiedtime:
print("CPU file is older than server file.")
else:
print("CPU file is NOT older than server file.")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |