Найти - Пользователи
Полная версия: Скачать архив, если время файла изменено...
Начало » Python для новичков » Скачать архив, если время файла изменено...
1
true
Подскажите пожалуйста:
1) как скачать файл через HTTP, с учетом если локальная его копия не изменилась - то не качать
аналог wget -N
2) как скачать файл через HTTP используя логин и пароль, аналог wget –http-user=
3) как скачать файл с FTP используя маску в имени файла, через wget я делал как wget … ftp/server.com/file-1*.zip

Думаю ответы на эти вопросы будут полезны не только мне, но и другим новичкам! Большое спасибо!
JOHN_16
true
Если вам решать конкретную задачу, то походу будет проще из питона вызывать wget ( через модуль subprocess), иначе по каждому вопросу может получится достаточно объемный вопрос.
reclosedev
Согласен с JOHN_16, но можно и самому написать. С использованием requests:
1) Упрощено, без обработки ошибок:
import email.utils
import os
import datetime
import shutil
import requests
 
def parse_datetime(text):
    dtz = email.utils.parsedate_tz(text)
    dt = datetime.datetime(*dtz[:6])
    if dtz[9]:  # utc offset
        dt += datetime.timedelta(hours=dtz[9])
    return dt
 
def download_if_modified(url, filename):
    resp = requests.get(url, prefetch=False)
    need_to_download = True
    if os.path.exists(filename):
        urldate = parse_datetime(resp.headers['last-modified'])
        filedate = datetime.datetime.utcfromtimestamp(os.path.getmtime(filename))
        need_to_download = urldate > filedate
    if need_to_download:
        with open(filename, "wb") as fp:
            shutil.copyfileobj(resp.raw, fp)
    return need_to_download
         
download_if_modified('http://python.su/static/images/logo.gif', 'logo.gif')
download_if_modified('http://yandex.st/www/1.400/yaru/i/logo.png', 'logo.png')
2) http://docs.python-requests.org/en/latest/user/quickstart/#basic-authentication

3) http://docs.python.org/2/library/ftplib.html + http://docs.python.org/2/library/fnmatch.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB