Загрузка файла с помощью метода post и python


Мне нужна небольшая помощь в получении файла tar для загрузки с веб-сайта. Веб-сайт настраивается как форма, в которой вы выбираете нужный файл и нажимаете кнопку Отправить, а затем открывается окно загрузки, чтобы вы могли выбрать местоположение.

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

Ниже приведен вывод оболочка питона и шаги, которые я предпринял

Python 2.5.2 on win32

IDLE 1.2.2      
>>> import urllib
>>> import urllib2
>>> url = 'http://website/getdata.php'
>>> values = {'data[]': 'filex.tar'}
>>> data = urllib.urlencode(values)
>>> req = urllib2.Request(url,data)
>>> response = urllib2.urlopen(req)
>>> response
addinfourl at 22250280 whose fp = <socket._fileobject object at 0x01534570
>>> response.fp
socket._fileobject object at 0x01534570
1 2

1 ответ:

Добавьте это:

myfile = open('myfile.tar', 'wb')
shutil.copyfileobj(response.fp, myfile)
myfile.close()

response.fp это файлоподобный объект, из которого можно читать, как из открытого файла. shutil.copyfileobj() - это простая функция, которая считывает данные с одного файлоподобного объекта и записывает их содержимое в другой.