Search code examples
pythoncurlpopen

subprocess popen + curl + binary data


The following statement works as expected:

os.system("curl --data-binary \@"+input_file_path+" -o "+ file_name +" localhost:30")

But when trying it with subprocess.popen:

Popen(['curl','--data-binary','\@'+input_file_path, '-o', file_name,'localhost:30'], stdout=PIPE).communicate()[0]

Curl seems to hang up(logs into endless loop), like if the input file is not passed to it(which is mandatory for localhost:30 to function properly)...

Any ideas?


Solution

  • You could try using the original string in subprocess.Popen with the additional keyword argument to Popen of shell=True:

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