Python 2.7使用飞书上传图片的功能
Posted 黑羽青衣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7使用飞书上传图片的功能相关的知识,希望对你有一定的参考价值。
近期公司全部换成了飞书作为通讯的工具,之前的企业微信的机器人和写法都得重新写过了。
所以在打包以后的构建通知等都要通过飞书来通知。当然普通的通知写法很简单,带有图片的会有点麻烦。
但是比较蛋疼的是,公司打包的机器上只有Python2.7(WHATTHEFXXK)。
没有办法,虽然Python2.7很蛋疼,但是也只能上了。
在飞书的官方上有提供Python3.X版本的写法,我这里也就不多说了。
主要讲讲,Python2.7的一个写法。
其实一开始走了不少的各种弯路,总是以为是图片的编码问题?因为Python总是报的编码的错误。
于是总是在图片相关的编码上的问题上纠结。
后面我才发现了一个巨大的坑!这个坑是之前没有想到的。
问题出在headers上,由于编码上的不同,Python2.7传入的参数内是带有u\'...\'
比如,我编写了一个字符串number,输出到网页上,变成了u\'number\'
原因:python2.7支持unicode编码和utf-8编码两种,显示时显示成u‘number’表明这是一个unicode编码的字符串,所以转换成utf-8就不显示成u\'number\'啦!~
虽然有些人说其实他不会影响程序的运行,但是由于我是传入的参数,传错了就会导致有各种的报错,于是我就炸了,搞了半天。
然后我会附上2.7如何运行的代码!注意是2.7!2.7!2.7!
def upload_image(self, image_path): postUrl = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" payload_message = { "app_id": "", #填写你的机器人的app_id "app_secret": "" #填写你的机器人的app_secret } headers = { \'Content-Type\': \'application/json\' } response = requests.request("POST", postUrl, headers=headers, data=json.dumps(payload_message)) content = response.json() if content.get("code") != 0: raise Exception("Call Api Error, errorCode is %s" % content["code"]) token = content.get("tenant_access_token") with open(image_path, \'rb\') as f: image = f.read() resp = requests.post( url=\'https://open.feishu.cn/open-apis/image/v4/put/\', headers={\'Authorization\': "Bearer " + token.encode(\'utf-8\')}, files={ "image": image }, data={ "image_type": "message" }, stream=True) resp.raise_for_status() content = resp.json() print(content) if content.get("code") == 0: return content else: raise Exception("Call Api Error, errorCode is %s" % content["code"])
啊,写2.7心好累,还是3.X爽
以上是关于Python 2.7使用飞书上传图片的功能的主要内容,如果未能解决你的问题,请参考以下文章
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段