Python: Загрузка большого файла к локальному пути и установке пользовательских http заголовков

Используйте replace()

UPDATE table_name SET content = REPLACE(content, 'https://curious-api.example.pro', 'http://localhost')

5
задан 8 April 2009 в 00:44
поделиться

2 ответа

Если Вы хотите использовать urllib и urlretrieve, подкласс urllib.URLopener и используйте addheader() метод для корректировки заголовков (т.е.: addheader('Accept', 'sound/basic'), который я вытягиваю от docstring для urllib.addheader).

Для установки URLopener для использования urllib посмотрите пример в urllib. _ urlopener раздел документов (отмечают подчеркивание):

import urllib

class MyURLopener(urllib.URLopener):
    pass # your override here, perhaps to __init__

urllib._urlopener = MyURLopener

Однако Вы будете рады услышать wrt Ваш комментарий к комментариям вопроса, читая пустую строку из read() действительно сигнал остановиться. Это - то, как urlretrieve обрабатывает, когда остановиться, например. TCP/IP и сокеты абстрагируют процесс считывания, блокируясь ожидающий дополнительных данных, если соединение на другом конце не является EOF и закрытый, в этом случае читайте (), луг от соединения возвращает пустую строку. Пустая строка означает, что нет никаких данных, сочащихся в... Вы не должны волноваться о заказанной пакетной повторной сборке, поскольку это было все обработано для Вас. Если это - Ваше беспокойство о urllib2, я думаю, что можно безопасно использовать его.

2
ответ дан 14 December 2019 в 19:25
поделиться

Что плохого в написании собственной функции с помощью urllib2?

import os
import sys
import urllib2

def urlretrieve(urlfile, fpath):
    chunk = 4096
    f = open(fpath, "w")
    while 1:
        data = urlfile.read(chunk)
        if not data:
            print "done."
            break
        f.write(data)
        print "Read %s bytes"%len(data)

и использовании объекта запроса для установки заголовков

request = urllib2.Request("http://www.google.com")
request.add_header('User-agent', 'Chrome XXX')
urlretrieve(urllib2.urlopen(request), "/tmp/del.html")
3
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: