微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – subprocess.Popen没有正确转义命令行参数?

我试图用python调用以下curl命令:

curl -k -F [email protected] -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps

为了它的工作,我发现我传入数据的json需要使用反斜杠进行转义.

我可以用…来调用这个命令

os.system(curl -k -F [email protected] -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps)

它的工作原理.

但是,当我尝试使用像这样的子进程模块时……

s = 'curl -k -F [email protected] -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

…卷曲不起作用,我从api我得到一个错误,我正在使用无效参数,这是我在过去使用不正确的转义json时得到的.

这里发生了什么?为什么我可以用os.system调用这个命令而不是subprocess.Popen?到目前为止,我的假设是分裂正在搞乱字符串中的某些东西,但是当我检查s.split()的输出时,我没有发现任何看起来错误的东西.

解决方法:

也许使用shell = True

push = subprocess.Popen(s, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐