我的卷发看起来有点像这样:
curl -1 -X POST --user "xxx:yyy" -d "status=new&content=issue+details+at%3A+http%3A%2F%2Flocalhost%3A6543%2Ftest%2Fsubmit%2F16-07-03-H-20-18-&kind=bug&title=QA+Fail&responsible=xxx&priority=critical" "https://api.bitbucket.org/1.0/repositories/my/repo/issues"
Run Code Online (Sandbox Code Playgroud)
如果我打开一个终端并执行它它工作正常(在bitbucket中创建一个问题)
如果我尝试通过子进程执行相同的curl,它就会失败:
sCmd = "curl....etc"
lCmd = [s for s in sCmd.split() if s]
subprocess.call(lCmd)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
curl: (1) Protocol "https not supported or disabled in libcurl
Run Code Online (Sandbox Code Playgroud)
我不明白为什么完全相同的命令在Python中的工作方式如此不同.有任何想法吗?
顺便说一句,这不使用virtualenv.而且我知道事实的内容lCmd是有效的
PS:是的,我知道我应该使用请求.不幸的是,请求给了我类似的问题.
如果这有用,请投票支持 Andrae 的答案,它让我走上了正确的道路。
查看错误消息:
curl: (1) Protocol "https not supported or disabled in libcurl
Run Code Online (Sandbox Code Playgroud)
一方面看到"https问题,https另一方面工作正常。
问题是我认为应该将参数字符串括在引号中。
因此有两种简单的方法可以解决这个问题:
lCmd = shlex.split(sCmd)
subprocess.call(lCmd)
Run Code Online (Sandbox Code Playgroud)
或者
import os
os.system(sCmd)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1592 次 |
| 最近记录: |