Подпроцесс popen + curl + двоичные данные
Следующее утверждение работает как ожидалось:
os.system("curl --data-binary \@"+input_file_path+" -o "+ file_name +" localhost:30")
Но при попытке с subprocess.popen
:
Popen(['curl','--data-binary','\@'+input_file_path, '-o', file_name,'localhost:30'], stdout=PIPE).communicate()[0]
Кажется, что Curl зависает (входит в бесконечный цикл), как если бы входной файл не был передан ему (что является обязательным для правильной работы localhost:30)...
Есть идеи?
3 ответа
Решение
Вы можете попробовать использовать оригинальную строку в subprocess.Popen
с дополнительным ключевым аргументом Popen
из shell=True
:
subprocess.Popen("curl --data-binary \@"+input_file_path+" -o "+ file_name +" localhost:30",
stdout=subprocess.PIPE,
shell=True)
Как насчет использования библиотеки вместо вызова системного curl?
Как насчет использования библиотеки запросов
Или еще один
Проверьте эту ссылку для случая двоичного файла (файла изображения) Как загрузить изображение с помощью запросов