解决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编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
python 批量修改/替换数据的实例
Jul 25 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
Python正则表达式急速入门(小结)
Dec 16 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
Python中bisect的用法及示例详解
Jul 20 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 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 array_walk() 数组函数
2011/07/12 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
python求解水仙花数的方法
2015/05/11 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python 多核并行计算的示例代码
2017/11/07 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
奶茶店创业计划书
2014/08/14 职场文书
青年标兵事迹材料
2014/08/16 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Redis高并发缓存架构性能优化
2022/05/15 Redis