python2.7 end=号报错_python2 post 上传压缩文件编码报错

python版本是2.7,使用urllib2将文件推送至微信,在上传文件时,碰到这样一个问题:上传未经压缩的文本文件,可以成功;上传经过压缩的二进制文件,则提示编码错误

代码如下

def upload_tmpfile_old(self,filepath):

try:

#文件存在、文件可读、文件大小小于19M

if not (os.path.isfile(filepath) and os.access(filepath,os.R_OK)

and os.path.getsize(filepath)<19922944):

return -1

boundary = '----------%s' % hex(int(time.time() * 1000))

data = []

data.append('--%s' % boundary)

fr = open(filepath, 'rb')

data.append('Content-Disposition: form-data; name="media"; filename="pickdump"')

data.append('Content-Type: application/octet-stream\r\n\r\n')

data.append(fr.read())

fr.close()

data.append('--%s--\r\n' % boundary)

http_body = '\r\n'.join(data)

print http_body

sendurl = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=" + Token.gettoken() + "&type=file"

req = urllib2.Request(sendurl, data=http_body)

req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)

req.add_header('Content-Length',len(http_body))

print req.headers

self.resp = urllib2.urlopen(req, timeout=5)

print self.resp.__dict__

print self.resp.read()

except:

logger.exception("上传文件出现异常")

raise

if __name__ == '__main__':

uploadfile = wxRequest("WZ", '', '', "file", 1000002)

uploadfile.upload_tmpfile_old("/home/wz/12306.txt.zip")

报错信息如下:

Traceback (most recent call last):

File "/home/wzk/wx2x/wxpush.py", line 264, in

uploadfile.upload_tmpfile_old("/home/wzk/12306.txt.zip")

File "/home/wzk/wx2x/wxpush.py", line 227, in upload_tmpfile_old

self.resp = urllib2.urlopen(req, timeout=5)

File "/usr/lib64/python2.7/urllib2.py", line 154, in urlopen

return opener.open(url, data, timeout)

File "/usr/lib64/python2.7/urllib2.py", line 431, in open

response = self._open(req, data)

File "/usr/lib64/python2.7/urllib2.py", line 449, in _open

'_open', req)

File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain

result = func(*args)

File "/usr/lib64/python2.7/urllib2.py", line 1242, in https_open

context=self._context)

File "/usr/lib64/python2.7/urllib2.py", line 1196, in do_open

h.request(req.get_method(), req.get_selector(), req.data, headers)

File "/usr/lib64/python2.7/httplib.py", line 1057, in request

self._send_request(method, url, body, headers)

File "/usr/lib64/python2.7/httplib.py", line 1097, in _send_request

self.endheaders(body)

File "/usr/lib64/python2.7/httplib.py", line 1053, in endheaders

self._send_output(message_body)

File "/usr/lib64/python2.7/httplib.py", line 895, in _send_output

msg += message_body

UnicodeDecodeError: 'utf8' codec can't decode byte 0xb6 in position 149: invalid start byte

以前用python3,byte和str有明确的区分。这个功能由于版本问题,只能用python2,结果发现编码各种坑啊。

压缩文件本来就是一个二进制文件,不能被utf-8解码也是正常的,不知道对于这个问题有没有方法解决?

PS 以前用requests的时候,是把文件读成bytes后,直接拼回body里面的,不知道这样做在python2中应该如何写?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 赚钱 知乎_爬虫实战:抓取知乎问题 “大学生如何赚到一万元”

最近对赚钱的话题很感兴趣&#xff0c;在知乎上关注了很多“赚钱”相关的问题&#xff0c;高质量的有不少&#xff0c;但是夹杂着私货的也不少。不过知乎的数据比较全&#xff0c;我们完全可以用来做文本分析。爬虫的原理我就不细讲了&#xff0c;如果大家对爬虫的原理和相关库…

SpringBoot:解决日期转换问题和日期展示问题

本次我们解决问题&#xff1a;日期展示问题(返回的json中日期的格式是:“birthday”:“1988-08-07T15:00:00.0000000”);需要转化成指定的格式&#xff08;年月日时分秒格式&#xff09; 1、问题如 2、解决方案 在配置中加入 #时间戳统一转换 spring.jackson.date-formatyyy…

13 - java包装类

变量的包装类 八种数据类型 八种包装类 基础数据类型引用数据类型byteByteshortShortintIntegerlongLongfloatFlatdoubleDoublecharCharacterbooleanBoolean 自动装箱 (jdk1.5就有了) Integer i 0; > Integer i new Integer("0"); //> 基础数据类型会自动…

日期格式化时注解@DateTimeFormat无效的问题分析

日期格式化时注解DateTimeFormat无效的问题分析 背景 有时候我们在写接口时&#xff0c;需要把前台传来的日期String类型转为Date类型 这时我们可能会用到DateTimeFormat注解 在请求数据为非JSON格式时&#xff0c;这个注解是没有问题的&#xff0c;可用的&#xff1b; 但…

12 - java 类加载内存图

栈是线程私有的、堆是线程公有的如果不加 static 就是堆里面的属性&#xff0c;加了static 就是元数据区的属性

source code怎么用_code-builder代码生成器

背景本来code-builder是专门为MyBatis Enhance来编写的一块代码生成器code-builder可以用来做什么&#xff1f;code-builder是一款代码生成maven mojo插件&#xff0c;通过简单的配置就可以完成数据库内Table转换Entity或者其他实体类&#xff0c;想怎么生成完全根据你的个人业…

@Transactional注解的失效场景

Transactional注解的失效场景 引言 Transactional 注解相信大家并不陌生&#xff0c;平时开发中很常用的一个注解&#xff0c;它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用Transactional注解时需要注意许多的细节&#xff0c;不然你会发现Transactional总是…

11 - java构造方法

java构造方法 构造方法 构造方法名与类名一致没有返回值使用 new 其实是在调用构造方法如果一个类里面没有构造方法&#xff0c;会自动创建一个空的构造方法构造方法能传参数&#xff0c;在构造期间就把对象的值赋好一旦有了新的有参数的构造方法&#xff0c;空的构造函数就不…

python无限循环的关键字_零基础学python-12.2 关键字pass,else,break,continue

关键字pass,else,break,continuepass&#xff1a;不做任何事情&#xff0c;只占位else&#xff1a;当正常跳出循环时执行break&#xff1a;满足某些条件跳出循环&#xff0c;不再执行任何东西continue&#xff1a;满足某些条件跳出本次循环&#xff0c;然后继续执行循环里面的东…

python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?

Python编程语言已经扩展了创新的每一个方面&#xff0c;包括机器学习、数据科学、人工智能等&#xff0c;这些概念是Python作为编程语言取得成功的基石。在本文中&#xff0c;我们将通过以下概念来理解PythoPython编程语言已经扩展了创新的每一个方面&#xff0c;包括机器学习、…

Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?

写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑。与其说是坑&#xff0c;还不如说是自己事务这块儿太薄弱导致的&#xff08;自嘲下&#xff09;。 项目环境 Spring Boot 下面开始问题描述&#xff0c;发生的过程有点长&#xff0c;想直接看方案的直接跳过哦~&#x…

10 - java 权限修饰符

java权限修饰符 作用域当前类同package子孙类其他packagepublic√√√√protected√√√friendly(defult)√√private√ 为什么要时候用权限修饰符&#xff1f; 对自己而言&#xff0c;保护代码不受污染对别人而言&#xff0c;给别人一个干净的类

vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗

背景&#xff1a;汇总了下老王在其他平台的原创回复&#xff0c;欢迎关注老王原创公众号【软件老王】&#xff0c;关注不迷路。一、后端开发完接口才给出接口文档&#xff0c;合理吗&#xff1f;本人所在的项目组做项目过程中&#xff0c;后端不会先给出接口文档&#xff0c;而…

JAVA那点破事,并发、IO模型、集合、线程池、死锁、非阻塞、AQS...

JDK、JRE、JVM 三者有什么关系&#xff1f; 答案&#xff1a; JDK&#xff08;全称 Java Development Kit&#xff09;&#xff0c;Java开发工具包&#xff0c;能独立创建、编译、运行程序。 JDK JRE java开发工具&#xff08;javac.exe/java.exe/jar.exe) JRE&#xff08;…

09 - java 包命名规范

java包命名规范 – 域名倒置 Java的包名都有小写单词组成&#xff0c;类名首字母大写&#xff1b;包的路径符合所开发的 系统模块的 定义&#xff0c;比如生产对生产&#xff0c;物资对物资&#xff0c;基础类对基础类。以便看了包名就明白是哪个模块&#xff0c;从而直接到对…

python memoryview_memoryview的用法

本来第一次看《流畅的python》觉得这部分没用&#xff0c;就跳过去&#xff0c;后面又出现&#xff0c;回头看还是一知半解&#xff0c;查了诸多资料&#xff0c;好像有一点明白了&#xff0c;立下帖子。1、memoryviewmemoryview()函数返回给定参数的内存查看对象(memory view)…

07 - java 方法里面的 return

Java 方法里面的 return return 之函数返回值 public static int sum(a, b) {return a b; }return 之结束方法 Scanner sc new Scanner(System.in): int num sc.nextInt();if (num 5) {return;System.out.println("哈哈哈&#xff0c;我是不会执行的"); // 函数遇…

世外桃源六python_六年匠心 桃花源记6月1日全民狂欢

六年匠心独运&#xff0c;烂漫之约!深圳淘乐携手并肩云畅游戏倾情打造出的人民良知连击手游《桃花源记》昨天宣布告一段落为期一周的小彩蛋检测!小彩蛋检测打开至今&#xff0c;诸位少主呼叫队友飘缈世外桃源的情绪高涨&#xff0c;网络服务器因而一度出現了满员的隆重开幕。而…

PTA 最小生成树-kruskal

7-92 最小生成树-kruskal 分数 10 全屏浏览题目 作者 任唯 单位 河北农业大学 题目给出一个无向连通图&#xff0c;要求求出其最小生成树的权值。 温馨提示&#xff1a;本题请使用kruskal最小生成树算法。 输入格式: 输出格式: 输出一个整数表示最小生成树的各边的长度之和。…

06 - java 方法

Java 方法 一个方法可以重复使用很多次&#xff0c;减少不必要的冗余&#xff0c;以及重复很多次不必要的操作让整个程序看起来模块化 public static void main (String[] args) {Scanner sc new Scanner(System.in);int num sc.nextInt();switch (num) {case 1: int[] arr…