子进程popen + curl +二进制数据

wrrgggsh  于 2023-03-08  发布在  其他
关注(0)|答案(3)|浏览(113)

下面的语句按预期工作:

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正常工作所必需的)...
有什么想法吗?

qjp7pelc

qjp7pelc1#

using a library代替调用系统的curl怎么样?

ssm49v7z

ssm49v7z2#

您可以尝试使用subprocess.Popen中的原始字符串以及shell=TruePopen的附加关键字参数:

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

lymnna713#

如何使用请求库
Python POST binary data
或者另一个
查看此链接了解二进制(映像文件)案例How to download image using requests

相关问题