解决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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
简单实现python聊天程序
Apr 01 Python
PyQt5每天必学之布局管理
Apr 19 Python
pandas.cut具体使用总结
Jun 24 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python实现同一局域网下传输图片
Mar 20 Python
Python requests模块安装及使用教程图解
Jun 30 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python爬取音频下载的示例代码
Oct 19 Python
Python 多线程处理任务实例
Nov 07 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实现文件下载更能介绍
2012/11/23 PHP
php 的反射详解及示例代码
2016/08/25 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
jQuery替换字符串(实例代码)
2013/11/13 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
js实现简易计算器功能
2019/10/18 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
python实现教务管理系统
2018/03/12 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
python中round函数如何使用
2020/06/19 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
服务标兵事迹材料
2014/05/04 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS