我试图在python脚本中执行curl命令。
如果我在终端上这样做,它看起来像这样:
curl -X POST -d '{"nw_src": "10.0.0.1/32", "nw_dst": "10.0.0.2/32", "nw_proto": "ICMP", "actions": "ALLOW", "priority": "10"}' http://localhost:8080/firewall/rules/0000000000000001
我已经看到使用pycurl
的建议,但我不知道如何将其应用到我的。
我试着用:
subprocess.call([
'curl',
'-X',
'POST',
'-d',
flow_x,
'http://localhost:8080/firewall/rules/0000000000000001'
])
而且有效,但是有更好的方法吗?
别这样!
我知道,这是没人想要的“答案”。但如果有值得做的事,值得做对的事,对吧?
这似乎是一个好主意,可能源于一个相当广泛的误解,即诸如
curl
之类的shell命令不是程序本身。所以你要问的是“我如何从我的程序中运行另一个程序,仅仅是为了发出一个微不足道的web请求?”。太疯狂了,一定有更好的办法,对吧?
Uxio's answer当然可以。但它看起来很难像是Python,不是吗?仅仅为了一个小小的请求就要做很多工作。Python应该是flying!任何一个写这篇文章的人都可能希望他们只是
call
dcurl
!是的,有一个更好的方法!
Requests: HTTP for Humans
让我们看看这一页:
就这样,真的!然后就有了原始的
res.text
,或者res.json()
输出,还有res.headers
等等你可以查看文档(链接在上面)了解设置所有选项的详细信息,因为我想OP现在已经开始了,而你——现在的读者——可能需要不同的选项。
但是,举个例子,它很简单:
您甚至可以使用一个漂亮的Python dict在带有
params={}
的GET请求中提供查询字符串。古朴典雅。保持冷静,继续飞行。
你可以像@roippi说的那样使用urllib:
如果对curl命令的调整不太多,也可以直接调用curl命令
相关问题 更多 >
编程相关推荐