对python调用微软API代码的理解

import httplib
import urllib
import base64
import sys
import ssl
ssl._create_default_https_context = ssl._create_unverified_context


def emotion():
    # print "success"
    headers = {
        'Content-Type': 'application/octet-stream',
        'Ocp-Apim-Subscription-Key': '6b106d11b891490298ebecbc1f99eb85', }
##确定使用类型是json还是stream,输入密钥
    params = urllib.urlencode(
        {"url": "https://api.projectoxford.ai/emotion/v1.0/recognize"})
##输入Request URL,urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串
    f = urllib.urlopen("http://127.0.0.1:8090/?action=snapshot")
    s = f.read()
    w = open("snapshot.jpg", "wb")
    w.write(s)
##将图片传给定地址,'wb'是以二进制写入(原文档没有给出127.0.0.1这个地址,此处为猜测)
    fp = open("snapshot.jpg", "rb")
##'rb'即为用二进制打开文件
    fp.seek(0, 0)
##进行此操作后读取文件的指针仍在开头,seek(offset,whence=0)offset:开始的偏移量,也就是代表需要移动偏移的字节数whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。默认为0。
    d = []
##定义列表d并把最重最终获得的二进制代码传到d中
    d = fp.read()
##进行文件的读写操作,最终目的是为了获得{body},即d
    try:
        conn = httplib.HTTPSConnection('api.projectoxford.ai')
        conn.request("POST", "/emotion/v1.0/recognize?%s" % params, d, headers)
##将一系列的头,需要的URL,检测的图片的二进制代码post到微软网站
        response = conn.getresponse()
        data = response.read()
        print(data)
        conn.close()
##获取的微软API返回的参数并储存到data中
    except Exception as e:
        print("[Errno {0}] {1}".format(e.errno, e.strerror))
##如果发生错误的话就输出错误类型
    data = eval(data)
##利用eval函数可以把返回的字符串转换为python能够识别的列表形式
    num = len(data)
##计算列表元素,而非字符串个数
    ret = []
    for i in range(0, num):
        ret.append(sorted(data[i]["scores"],reverse=True,key=lambda x: data[i]["scores"][x])[0])
    ret = str(ret)
##对其进行sorted排序,最终只返回最大的那个,建立ret列表,重新转换为字符串,sorted排序:data为列表可迭代对象,reverse控制降序排列,key写了一个匿名函数确定了排序的规则,最后[0]限定了只添加第一个即为最大的那个元素
    return ret


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值