解决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时间模块datetime、time、calendar的使用方法
Jan 13 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
python 实现敏感词过滤的方法
Jan 21 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Python简易版图书管理系统
Aug 12 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
什么是Python中的匿名函数
Jun 02 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python打开音乐文件的实例方法
Jul 21 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
js实现跨域的多种方法
2015/12/25 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
Python中for循环控制语句用法实例
2015/06/02 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
小学数学教学反思
2014/02/02 职场文书
计算机专业职业规划
2014/02/28 职场文书
法制宣传月活动方案
2014/05/11 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
三下乡个人总结
2015/03/04 职场文书
餐厅开业活动方案
2019/07/08 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL