2010-01-14 2 views
0

Следующий оператор работает, как ожидалось:подпроцесс POPEN + скручивание + двоичные данные

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) ...

Любые идеи?

ответ

2

Вы можете попробовать использовать исходную строку в subprocess.Popen с дополнительным аргументом ключевого слова Popen из shell=True: завиток

subprocess.Popen("curl --data-binary \@"+input_file_path+" -o "+ file_name +" localhost:30", 
    stdout=subprocess.PIPE, 
    shell=True) 
3

как насчет using a library вместо вызова системы?

+0

Потому что иногда вы не хотите ждать ответа или ждать вообще, просто разблокировать и забыть. Как при регистрации. – rapadura

+0

Еще одна хорошая библиотека http python - библиотека [запросов] (http://docs.python-requests.org/en/master/) – Mercury

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