python执行curl_Python中的CURL替代

54584d9f0001043b02200220-100-100.jpg

catspeake

例如,如何使用urllib以及一些糖语法。我知道请求和其他库,但是urllib是python的标准库,不需要单独安装任何东西。兼容Python 2/3。import sysif sys.version_info.major == 3:  from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener  from urllib.parse import urlencodeelse:  from urllib2 import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener  from urllib import urlencodedef curl(url, params=None, auth=None, req_type="GET", data=None, headers=None):  post_req = ["POST", "PUT"]  get_req = ["GET", "DELETE"]  if params is not None:    url += "?" + urlencode(params)  if req_type not in post_req + get_req:    raise IOError("Wrong request type \"%s\" passed" % req_type)  _headers = {}  handler_chain = []  if auth is not None:    manager = HTTPPasswordMgrWithDefaultRealm()    manager.add_password(None, url, auth["user"], auth["pass"])    handler_chain.append(HTTPBasicAuthHandler(manager))  if req_type in post_req and data is not None:    _headers["Content-Length"] = len(data)  if headers is not None:    _headers.update(headers)  director = build_opener(*handler_chain)  if req_type in post_req:    if sys.version_info.major == 3:      _data = bytes(data, encoding='utf8')    else:      _data = bytes(data)    req = Request(url, headers=_headers, data=_data)  else:    req = Request(url, headers=_headers)  req.get_method = lambda: req_type  result = director.open(req)  return {    "httpcode": result.code,    "headers": result.info(),    "content": result.read()  }"""Usage example:"""Post data:  curl("http://127.0.0.1/", req_type="POST", data='cascac')Pass arguments (http://127.0.0.1/?q=show):  curl("http://127.0.0.1/", params={'q': 'show'}, req_type="POST", data='cascac')HTTP Authorization:  curl("http://127.0.0.1/secure_data.txt", auth={"user": "username", "pass": "password"})功能不完整,可能不理想,但显示了基本的表示形式和要使用的概念。可以根据口味添加或更改其他内容。12/08更新这是GitHub的实时更新源链接。目前支持:授权书兼容CRUD自动字符集检测自动编码(压缩)检测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值