Я выполняю простую задачу по загрузке файла с помощью библиотеки запросов Python. Я искал в Stack Overflow, и, похоже, ни у кого не возникло такой же проблемы, а именно, что файл не получен сервером:
Я заполняю значение ключевого слова 'upload_file' своим именем файла, потому что, если я оставлю его пустым, там будет написано
Error - You must select a file to upload!
И теперь я получаю
File file.txt of size bytesis uploaded successfully! Query service results: There were 0 lines.
Который появляется, только если файл пуст. Итак, я застрял в вопросе, как успешно отправить мой файл. Я знаю, что файл работает, потому что, если я зайду на этот веб-сайт и вручную заполню форму, он вернет хороший список подходящих объектов, что мне и нужно. Я был бы очень признателен за все подсказки.
Некоторые другие связанные темы (но не отвечающие на мою проблему):
Обратите внимание на параметр filename="file.txt".
Вы можете использовать кортеж для files значения сопоставления, содержащий от 2 до 4 элементов, если вам нужно больше контроля. Первым элементом является имя файла, за которым следует содержимое, а также необязательное значение заголовка content-type и необязательное сопоставление дополнительных заголовков:
Это устанавливает альтернативное имя файла и тип содержимого, исключая необязательные заголовки.
Если вы хотите, чтобы все тело записи было взято из файла (без указания других полей), то не используйте files параметр, просто опубликуйте файл непосредственно как data. Затем вы, возможно, захотите также задать Content-Type заголовок, поскольку в противном случае ничего не будет установлено. Смотрите Запросы Python - ОТПРАВКА данных из файла.
Ответ 2
(2018) новая библиотека запросов python упростила этот процесс, мы можем использовать переменную 'files', чтобы сигнализировать, что мы хотим загрузить файл с кодировкой из нескольких частей
Если вы хотите загрузить один файл с помощью requests библиотеки Python, то requests lib поддерживает потоковые загрузки, которые позволяют вам отправлять большие файлы или потоки без чтения в память.
withopen('massive-body', 'rb') as f: requests.post('http://some.url/streamed', data=f)
Серверная часть
Затем сохраните файл на server.py стороне таким образом, чтобы сохранить поток в файл без загрузки в память. Ниже приведен пример использования загрузки файлов Flask.
Или используйте синтаксический анализ данных формы werkzeug, как указано в исправлении проблемы "загрузка больших файлов съедает память", чтобы избежать неэффективного использования памяти при загрузке больших файлов (файл размером около 22 Гигабайт за ~ 60 секунд. Использование памяти постоянно составляет около 13 Мбайт.).