requests 上件中文文件名报错解决方案
这几天在用wxpy写机器人,在调用里面的上传文件接口的时候,一直报错。经过排查后,发现是不支持中文文件名;
在群里问了下作者后才知道是requests惹的祸,默认requests用的是unicode来处理文件路径的,所以一旦文件名里面包含了汉字,就会出现下面的错误。
An error occurred in <function process_text at 0x000001BB634DCEA0>.
Traceback (most recent call last):
File "C:\Program Files\Python35\lib\site-packages\wxpy\api\bot.py", line 335, in process
ret = config.func(msg)
File "C:/Users/Administrator/PycharmProjects/example/weixin/1.py", line 62, in process_text
msg.reply_file(r"D:\视频播放方法-windows.docx")
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 59, in wrapped
smart_map(check_response_body, ret)
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 179, in smart_map
return func(i, *args, **kwargs)
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 25, in check_response_body
raise ResponseError('ret: {}; err_msg: {}'.format(ret, err_msg))
wxpy.exceptions.ResponseError: ret: 1; err_msg:
好了,不多说,直接给解决方案
requests处理文件路径的模块是:C:\Program Files\Python35\Lib\site-packages\requests\packages\urllib3\fields.py
打开它!
1 value = email.utils.encode_rfc2231(value, 'utf-8')
2 value = '%s*=%s' % (name, value) # 报错的原因就是这行代码
把它改成这样就可以正常运行了。
1 value = email.utils.encode_rfc2231(value, 'utf-8')
2 value = '%s="%s"' % (name, value.encode('utf-8'))
提示:我用的python3.5.2,其它版本的要所情况改下编码就行了
参考资料:
http://blog.csdn.net/wendaoinbeijing/article/details/48247261
https://github.com/requests/requests/issues/2117
https://segmentfault.com/q/1010000002633223/a-1020000002657633
requests 上件中文文件名报错解决方案的更多相关文章
- Flask下如何处理Requests 上传中文文件名的问题
一.问题的由来 最近有个项目,叫做文档服务资源中心,类似于七牛,为各个业务系统提供统一的文件资源服务,包括文件的存储.操作管理.下载.预览等.在做文件存储的时候,遇到了这个当指定上传的文件名为 ...
- 关于python操作带有中文文件名报错的解决办法
python代码的编码格式 #coding:utf-8 在操作文件时,如果文件名带有中文,则需要将文件路径以Unicode的编码格式进行操作 具体的方式如下 path = "你的 ...
- Mac上PyCharm运行多进程报错的解决方案
Mac上PyCharm运行多进程报错的解决方案 运行时报错 may have been in progress in another thread when fork() was called. We ...
- 转:CentOS上安装LAMP之第三步:MySQL环境及安装过程报错解决方案(纯净系统环境)
这是AMP运行环境中最后配置的环境: 惯例传送门: 1.编译安装MySQL cd /home/zhangatle/tar tar zxvf mysql-.tar.gz cd mysql- cmake ...
- 用户 'IIS APPPOOL\**' 登录失败的解决方案(项目部署到本地IIS上打开网页出现报错)
为开发方便-将项目部署到本地IIS上打开网页出现报错 1.打开IIS管理 2.点击应用池 3.找到你部署的网站名,右键“高级设置”——>“进程模型”——>“标识”修改为localsyste ...
- 用了skin皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
http://blog.csdn.net/keenweiwei/article/details/7403869 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBo ...
- RabbitMQ>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.-报错解决方案 原来是NNND。。。
>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as ...
- JMeter 报告监听器导入.jtl结果文件报错解决方案
JMeter 报告监听器导入.jtl结果文件报错解决方案 by:授客 QQ:1033553122 1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...
- 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBox.show()错误!!容量超出了最大容量.参数名: capacity 解决方案: 设置 skin.SkinDi ...
随机推荐
- Python-统计目录(文件夹)中Excel文件个数和数据量
背景:前一阵子在帮客户做Excel文件中的数据处理,但是每周提交周报,领导都需要统计从客户接收的文件数量以及记录数.所以我就简单写了统计的脚本,方便统计目录(文件夹)中的Excel文件个数和数据量. ...
- Gym 101334E dp
分析: 这一题给出的遍历的点的序列,不是树的中序遍历,前序遍历,只要遇到一个节点就打印一个节点.关键点就在,这个序列的首字母和尾字母一定要相同,因为最终都会回到根节点,那么每一个子树也一样. 状态: ...
- jce-jdk13-120.jar
jce-jdk13-120.jar https://files.cnblogs.com/files/blogs/692137/jce-jdk13-120.rar
- jenkins pipeline构建后返回构建结果给gitlab
jenkins pipeline构建后返回构建结果给gitlab 使用场景 gitlab 合并请求时要求管道任务必须成功,否则无法执行合并操作,又不想使用gitlab ci 工具. 实现方法 1.Ge ...
- XCTF-boomshakalaka-3
这题讲道理出的挺脑洞的,apk直接拖入jeb打开,找到主活动 这里有两个方法,一个是onCreate()方法,还有一个是onCreateView()方法 onCreate()方法调用了a这个对象的d方 ...
- [转载] 笑话:Developer and product manager
A man flying in a hot air balloon suddenly realizes he's lost. He reduces height and spots a man dow ...
- 《基于JQuery和CSS的特效整理》系列分享专栏
<基于JQuery和CSS的特效整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201724.html 文章 一款基于jQue ...
- Macbook(M1版)的用户看过来,.net 6 Preview 6支持Apple Silicon for macOS
本文由葡萄城技术团队翻译 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴发布.NET6预览的第6版,本次预览是倒数第二次预览了.在本次预览发布之 ...
- Oracle_RAC共享存储
<<ASM.sh>> 第2-3步可以使用"附件ASM.sh"脚本执行 此操作说明,此操作在2个节点都执行(可以复制) 编辑/etc/scsi_id.conf ...
- MySQL数据库性能优化该如何入手
今天小杨给大家分享一篇关于数据库查询优化,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情. ...