解决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抓取网页内容示例分享
Feb 24 Python
跟老齐学Python之list和str比较
Sep 20 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
python实现小世界网络生成
Nov 21 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 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
sphinx增量索引的一个问题
2011/06/14 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
destoon官方标签大全
2014/06/20 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
PHP getName()函数讲解
2019/02/03 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python编写单元测试代码实例
2020/09/10 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
公司授权委托书格式范文
2014/10/02 职场文书
场地使用证明模板
2014/10/25 职场文书
勤俭节约主题班会
2015/08/13 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
Python Django项目和应用的创建详解
2021/11/27 Python
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL