解决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的logging模块在stdout输出的两种方法
May 17 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
Python遍历numpy数组的实例
Apr 04 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
TensorFlow实现Logistic回归
Sep 07 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
Python适配器模式代码实现解析
Aug 02 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 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
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
javascript下function声明一些小结
2007/12/28 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
python字符串排序方法
2014/08/29 Python
Python中的Django基本命令实例详解
2018/07/15 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
网络研修随笔感言
2014/02/17 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
总经理检讨书范文
2015/02/16 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
学生犯错保证书
2015/05/09 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书