解决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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
详细介绍Ruby中的正则表达式
Apr 10 Python
Python中的进程分支fork和exec详解
Apr 11 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python实现抖音视频批量下载
Jun 20 Python
创建Django项目图文实例详解
Jun 06 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
Python编程编写完善的命令行工具
Sep 15 Python
Pandas数据结构之Series的使用
Mar 31 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python 字符串操作方法大全
2014/03/11 Python
python处理大数字的方法
2015/05/27 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
Python 类的继承实例详解
2017/03/25 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
python用post访问restful服务接口的方法
2018/12/07 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python 19个值得学习的编程技巧
2020/08/15 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
倡议书格式范文
2014/04/14 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
高中班主任评语
2014/12/30 职场文书
肖申克救赎观后感
2015/06/02 职场文书
初中政治教学反思
2016/02/23 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python