Как я могу получить дату создания файла в Интернете (с Python)?

1

У меня есть приложение python, которое полагается на файл, который загружается клиентом с веб-сайта.

Веб-сайт не находится под моим контролем и не имеет API для проверки "последней версии" файла.

Есть ли простой способ получить доступ к файлу (на python) через URL-адрес и проверить его дату (или размер) без необходимости загружать его на клиентскую машину каждый раз?

update: Спасибо тем, кто упомянул дату последнего изменения. Это правильный параметр для просмотра.

Думаю, я не сформулировал вопрос достаточно хорошо. Как это сделать с помощью python script? Я хочу, чтобы приложение проверяло файл, а затем загружало его, если (дата последнего изменения и текущая дата файла).

Теги:
http

5 ответов

4
Лучший ответ

Проверьте заголовок Last-Modified.

EDIT: попробуйте urllib2.

EDIT 2: Этот короткий учебник должен дать вам довольно хорошее представление о достижении вашей цели.

  • 0
    Также вы можете рассмотреть возможность использования заголовка ETag (в сочетании с отправкой заголовка If-None-Match в запросе)
5

Нет надежного способа сделать это. Насколько вам известно, файл может быть создан "на лету" веб-сервером, и вопрос "сколько лет этот файл" не имеет смысла. Веб-сервер может выбрать, чтобы предоставить Last-Modified заголовок, но он может сказать вам, что он хочет.

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())
2

В HTTP 1.1 раздел Content-Disposition предназначен для хранения такого рода информации в параметре creation-date (см. RFC 2183).

0

Я построил инструмент, который делает это на основе etags. Звучит очень похоже на то, что вы описываете:

pfetch - это скрученный инструмент, который делает это по расписанию и может работать со многими, многими URL-адресами и событиями запуска при изменении ( после загрузки). Это довольно просто, но все же может быть сложнее, чем вы хотите.

Этот код - это именно то, о чем вы просите.

Итак, возьмите свой выбор.:)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню