解决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操作CouchDB的方法
Oct 08 Python
python实现的文件夹清理程序分享
Nov 22 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
python 剪切移动文件的实现代码
Aug 02 Python
Python中的引用知识点总结
May 20 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
Python循环实现n的全排列功能
Sep 16 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
Python入门基础之数字字符串与列表
Feb 01 Python
实战Python爬虫爬取酷我音乐
Apr 11 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php xml文件操作代码(一)
2009/03/20 PHP
php异常处理使用示例
2014/02/25 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
Express的路由详解
2015/12/10 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
angular 服务随记小结
2019/05/06 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
Python 面试中 8 个必考问题
2018/11/16 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
如何在django中添加日志功能
2020/02/06 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
项目考察欢迎辞
2014/01/17 职场文书
模具数控专业自荐信
2014/01/27 职场文书
安全大检查反思材料
2014/01/31 职场文书
促销活动总结范文
2014/04/30 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
python办公自动化之excel的操作
2021/05/23 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL