【发布时间】:2011-07-18 21:49:59
【问题描述】:
我正在尝试使用 python 调用以下 curl 命令:
curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps
为了让它工作,我发现我传入数据的 json 需要用反斜杠转义。
我可以用...调用这个命令
os.system(curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps)
它有效。
但是,当我尝试像这样使用子流程模块时...
s = 'curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps'
push = subprocess.Popen(s.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, errors = push.communicate()
print output
...curl 不起作用,我从我正在使用的 api 中得到一个错误,我使用了无效参数,这是我过去使用不正确转义的 json 时得到的。
这里发生了什么?为什么我可以用 os.system 而不是 subprocess.Popen 调用这个命令?到目前为止,我的假设是拆分弄乱了字符串中的某些内容,但是当我检查 s.split() 的输出时,我没有发现任何看起来错误的内容。
【问题讨论】: