【发布时间】:2017-04-04 11:58:08
【问题描述】:
我正在尝试实现一个 python 脚本,它将比较本地和远程托管文件的最后修改日期。
如果远程文件较新,它应该: - 删除本地文件 - 下载保留最后修改日期的远程文件
我找到的最接近的答案是Last Modified of file downloaded does not match its HTTP header,但我相信这会下载整个文件,因此不会节省太多资源/时间
我想做的只是查看远程文件的标题,而不是下载我认为应该更快的整个文件。
这是我当前的代码,非常混乱和无聊(请参阅字符串替换等)我确信有更好/更快的方法 - 你有什么建议?
remote_source = 'http://example.com/somefile.xml'
local_source = 'path/to/myfile.xml'
if path.exists(local_source):
local_source_last_modified = os.path.getmtime(local_source)
local_source_last_modified = datetime.datetime.fromtimestamp(local_source_last_modified).strftime('(%Y, %m, %d, %H, %M, %S)')
conn = urllib.urlopen(remote_source)
remote_source_last_modified = conn.info().getdate('last-modified')
remote_source_last_modified = str(remote_source_last_modified)
remote_source_last_modified = remote_source_last_modified.replace(", 0, 1, 0)", ")")
if local_source_last_modified < remote_source_last_modified:
pass
else:
headers = urlretrieve(remote_source, local_source)[1]
lmStr = headers.getheader("Last-Modified")
remote_source_last_modified = mktime(strptime(lmStr, "%a, %d %b %Y %H:%M:%S GMT"))
os.utime(local_source, (remote_source_last_modified, remote_source_last_modified))
else:
headers = urlretrieve(remote_source, local_source)[1]
lmStr = headers.getheader("Last-Modified")
remote_source_last_modified = mktime(strptime(lmStr, "%a, %d %b %Y %H:%M:%S GMT"))
os.utime(local_source, (remote_source_last_modified, remote_source_last_modified))
【问题讨论】:
标签: python