我想将此 curl 命令转换为可以在 Python 中用于现有脚本的命令。
curl -u 7898678:X -H 'Content-Type: application/json' \
-d '{"message":{"body":"TEXT"}}' http://sample.com/36576/speak.json
TEXT 是我想用脚本其余部分生成的消息替换的内容。(这已经是合理的,尽管我认为它不遵循最佳实践或特殊性可靠。-需要找出如何正确学习编程(即不使用谷歌组装东西))
如果可能的话,我希望它与标准库一起使用。
最佳答案
I would like this to work with the standard library if possible.
标准库提供urllib
和 httplib
用于处理 URL:
>>> import httplib, urllib
>>> params = urllib.urlencode({'apple': 1, 'banana': 2, 'coconut': 'yummy'})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
... "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("example.com:80")
>>> conn.request("POST", "/some/path/to/site", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK
如果你想自己执行 curl
,你可以调用 os.system()
:
import os
TEXT = ...
cmd = """curl -u 7898678:X -H 'Content-Type: application/json'""" \
"""-d '{"message":{"body":"%{t}"}}' http://sample.com/36576/speak.json""" % \
{'t': TEXT}
如果您愿意放宽仅限标准库的限制,可以使用 PycURL
.请注意,它不是 Python 风格的(它几乎只是 libcurl 的薄薄的一层),我不确定它与 Python 3 的兼容性如何。
关于python - 仅使用标准库将 curl POST 请求转换为 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990976/