解决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生成验证码图片代码分享
Jan 28 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
使用 Python 遍历目录树的方法
Feb 29 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
python如何使用腾讯云发送短信
Sep 17 Python
python 如何对logging日志封装
Dec 02 Python
python集合的新增元素方法整理
Dec 07 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
python实现三阶魔方还原的示例代码
Apr 28 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP面向对象程序设计之接口用法
2014/08/20 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
PHP代码加密的方法总结
2020/03/13 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
js中this对象用法分析
2018/01/05 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Python3开发环境搭建详细教程
2020/06/18 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
python中random模块详解
2021/03/01 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
Java如何支持I18N?
2016/10/31 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
新员工辞职信范文
2015/05/12 职场文书
导游词之崇武古城
2019/10/07 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL