解决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中wx将图标显示在右下角的脚本代码
Mar 08 Python
python Django批量导入数据
Mar 25 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python实现统计文本文件字数的方法
May 05 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
python实现超简单的视频对象提取功能
Jun 04 Python
python实现对输入的密文加密
Mar 20 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
python实现简单成绩录入系统
Sep 19 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
python中pycryto实现数据加密
Apr 29 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
php字符串截取函数用法分析
2014/11/25 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
pycharm配置git(图文教程)
2019/08/16 Python
Python threading的使用方法解析
2019/08/28 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
PHP面试题及答案一
2012/06/18 面试题
鲜花方阵解说词
2014/02/13 职场文书
合伙经营协议书范本
2014/04/18 职场文书
国际会计专业求职信
2014/08/04 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
手残删除python之后的补救方法
2021/06/26 Python