解决Python 写文件报错TypeError的问题
作者:Kwoky 发布时间:2022-09-18 06:54:26
处理上传的文件:
f1 = request.FILES['pic']
fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name)
with open(fname, 'w') as pic:
for c in f1.chunks():
pic.write(c)
测试报错:
TypeError at /upload/
write() argument must be str, not bytes
把之前的打开语句修改为用二进制方式打开:
f1 = request.FILES['pic']
fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name)
with open(fname, 'wb+') as pic:
for c in f1.chunks():
pic.write(c)
没有问题了~
补充知识:python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
python2使用的是cPickle模块,而在python3中cPickle已经被取消,取而代之的是pickle模块。
开发过程中,我曾经遇到一个奇怪的问题,在读取一个文件时候,使用python2的如下方式:
import cPickle
train, test, dicts = cPickle.load(open("./dataset/atis.pkl"))
是可以正常读取文件的。
可是当换做python3的方式读取文件时候,如下:
import pickle
train, test, dicts = pickle.load(open("./dataset/atis.pkl"))
却获得了错误提示,提示信息如下:
Traceback (most recent call last):
File “Main.py”, line 4, in
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”))
TypeError: ‘str' does not support the buffer interface
查询错误信息后得知解决办法 链接,应该指明用二进制方式打开文件,于是代码改为:
import pickle
train, test, dicts = pickle.load(open("./dataset/atis.pkl", "rb"))
可是这时候错误变成了:
Traceback (most recent call last):
File “Main.py”, line 4, in
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”, “rb”))
UnicodeDecodeError: ‘ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)
于是再次求助万能的google,终于找到了解决办法 链接,我们需要告诉pickle:how to convert Python bytestring data to Python 3 strings,The default is to try and decode all string data as ASCII,所以代码改为:
import pickle
train, test, dicts = pickle.load(open("./dataset/atis.pkl", "rb"), encoding='iso-8859-1')
问题终于的到了解决。
来源:https://blog.csdn.net/Kwoky/article/details/79789316


猜你喜欢
- 此文章主要向大家描述的是MySQL高级查询方法之记录查询的实际操作步骤,以及对其实际操作过程中要用到的代码的详细描述,以下就是文章的主要内容
- 解决方案1.安装django-cors-headerspip install django-cors-headers2.配置settings
- 到了今天,数据库已经成了网站的灵魂,可以说,没有对数据进行集中管理就算不上是一个真正的网站。而ASP加数据库,更成了主流中的主流,网站里的用
- 前言大家应该都有所体会,随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,
- 由于代码比较短,这里就不进行注释了代码如下:<% '当目标页面的包含文件即#include的页面里边存在respon
- 本文来源于Element官方文档:http://element-cn.eleme.io/#/zh-CN/component/carousel
- 解决tensoflow如何在已训练模型上继续训练fineturn的问题。训练代码任务描述: x = 3.0, y = 100.0, 运算公式
- 一般情况下x,y,z = 1,2,3print("x:",x)print("y:",y)print(
- 随着python的发展越来越好,用python的伙伴也越来越多。本人刚开始接触python的时候用的第一个集成环境就是Anaconda,因为
- easy_install是一个python的扩展包,主要是用来简化python安装第三方安装包,在安装了easy_install之后,安装p
- Python 多进程和数据传递的理解python不仅线程用的是系统原生线程,进程也是用的原生进程进程的用法和线程大同小异import mul
- 本文为大家分享了PHP微信支付实例,包括PHP微信支付源码,PHP微信退款源码,php微信支付接口,供大家参考,具体内容如下1.JSapi支
- 今天介绍一种基于高斯滤波和邻域随机采样,生成一种毛玻璃的图像特效,简单来说,就是先对图像做高斯滤波模糊,然后对模糊后的图像,通过对邻域的随机
- 前言快520了,咱们来玩玩五子棋陶冶情操。快拿这个和你女朋友去对线。(分了别来找我哇)。多的不说直接进入正题人人对战游戏规则:p1为黑子,p
- 1.语音信号的产生与特性我们要对语音进行分析,首先要提取能够表示该语音的特征参数,有了特征参数才可能利用这些参数进行有效的处理,在对语音信号
- 首先说明本文并不是安装教程,网上有很多,这里只是自己遇到的一些问题我是以前安装的tensorflow-gpu的,但是发现现在的学术论文大部分
- 问题描述:1、(先添加时间戳,再复制移动,两个文件加下面的文件名都被修改)将 /home/kangle/webdata/JPEGImages
- 前言最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值。最简单的方案有两
- 本文实例讲述了MySQL中ROUND函数进行四舍五入操作陷阱。分享给大家供大家参考,具体如下:在MySQL中, ROUND 函数用于对查询结
- 1.开发jQuery 插件的基本格式 (function ($) { $.extend($.fn, { }) })(jQuery) 2.开发