解决Python 写文件报错TypeError的问题


Posted in Python onOctober 23, 2020

处理上传的文件:

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')

问题终于的到了解决。

以上这篇解决Python 写文件报错TypeError的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的字典和列表的使用中一些需要注意的地方
Apr 24 Python
用Python进行TCP网络编程的教程
Apr 29 Python
讲解Python中运算符使用时的优先级
May 14 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
带你了解python装饰器
Jun 15 Python
python机器学习之神经网络(二)
Dec 20 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
Python做智能家居温湿度报警系统
Sep 25 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
用Python提取PDF表格的方法
Apr 11 Python
python 利用Pyinstaller打包Web项目
Oct 23 #Python
python logging模块的使用详解
Oct 23 #Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 #Python
Python中免验证跳转到内容页的实例代码
Oct 23 #Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 #Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 #Python
详解python模块pychartdir安装及导入问题
Oct 22 #Python
You might like
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
Python求解平方根的方法
2015/03/11 Python
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
毕业生自我鉴定
2013/11/05 职场文书
统计员岗位职责
2013/11/14 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
花店创业计划书范文
2014/02/07 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
特种设备安全管理制度
2015/08/06 职场文书
初中政治教师教学反思
2016/02/23 职场文书