2014-03-21 2 views
25

Я выполняю простую задачу по загрузке файла с использованием библиотеки запросов Python. Я искал переполнения стека, и никто, казалось, не имеют те же проблемы, а именно, что файл не будет получен сервером:python запросы загрузка файла

import requests 
url='http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post' 
files={'files': open('file.txt','rb')} 
values={'upload_file' : 'file.txt' , 'DB':'photcat' , 'OUT':'csv' , 'SHORT':'short'} 
r=requests.post(url,files=files,data=values) 

я заполняю значение «upload_file» ключевое слово с моим именем файла, потому что если Я оставляю это поле пустым, он говорит

Error - You must select a file to upload! 

И теперь я получаю

File file.txt of size bytes is uploaded successfully! 
Query service results: There were 0 lines. 

Который приходит, только если файл пуст. Поэтому я застрял в том, как успешно отправить файл. Я знаю, что файл работает, потому что, если я перехожу на этот сайт и вручную заполняю форму, он возвращает хороший список совпадающих объектов, и это то, что мне нужно. Я бы очень признателен за все намеки.

Некоторые другие темы, связанные (но не отвечает на мои проблемы):

ответ

69

Если upload_file предназначается, чтобы быть файл, использование:

files = {'upload_file': open('file.txt','rb')} 
values = {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'short'} 

r = requests.post(url, files=files, data=values) 

и requests отправят многосекционную форму POST тело а с набором upload_file поля к содержимому файла file.txt.

Смежные вопросы