解决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 encode和decode的妙用
Sep 02 Python
Python设计模式之单例模式实例
Apr 26 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
python实现视频读取和转化图片
Dec 10 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Django如何批量创建Model
Sep 01 Python
Python实现对word文档添加密码去除密码的示例代码
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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
CI框架常用函数封装实例
2016/11/21 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
解析js如何获取css样式
2016/12/11 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
JS如何监听div的resize事件详解
2020/12/03 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
开始着手第一个Django项目
2015/07/15 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
windows下python安装小白入门教程
2018/09/18 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
windows下python安装pip方法详解
2020/02/10 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
品牌宣传方案
2014/03/21 职场文书
个人剖析材料范文
2014/09/30 职场文书
民主生活会汇报材料
2014/12/15 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python