python打开文件报错无效序列_解决Python 写文件报错TypeError的问题
处理上传的文件:
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 写文件报错TypeError的问题
本文地址: http://www.cppcns.com/jiaoben/python/357225.html
python打开文件报错无效序列_解决Python 写文件报错TypeError的问题相关推荐
- python打开文件报错无效序列_黑马python入门(4):python基础(序列,异常,操作文件,模块包,日志调试信息)
序列 str声明:test_str="abcedf" 也可以保留字符串里面的格式来 test_str=""" \r\n测试标题 hello world ...
- python封装成exe后运行失败_解决Python使用pyinstaller打包生成exe运行提示错误 | kTWO-个人博客...
最近用python写了个小的桌面程序,在本机上调试的时候,一点问题都没有,在生成exe后也可以正常打开,但是我发给舍友用的时候却突然出现的错误,运行后提示Failed to execute scrip ...
- python whl安装 缺少dll 查看具_解决Python安装时报缺少DLL问题【两种解决方法】
准备开始学习Python,但是刚准备环境搭建时就遇到了下面的错误: 仔细的看了看,说是缺少DLL. 对于这个问题的解决办法: 方法一: 1. 在安装包上点右键以管理员身份运行 2. C:\Users\ ...
- python打开文件报错无效序列_如何在python中读取fasta文件?
我正在尝试读取FASTA文件,然后查找特定的 motif(string)并打印出序列和次数. A FASTA file只是一系列序列(字符串),以标题行开头,标题或新序列的开头是">& ...
- python打开一个软件并进行操作_在Python中运行程序(R)以执行操作(执行脚本)的问题...
我想从 python执行一个R脚本,理想情况下显示和保存结果.使用rpy2有点挣扎,所以我想我只是直接打电话给R.我有一种感觉,我需要使用像"os.system"或"su ...
- mysql脚本报错继续执行_解决执行sql脚本报错:没有足够的内存继续执行程序。...
AngularJS 模块& 表单 模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 应用("myApp" ...
- python中的ssl模块不能用_解决Python找不到ssl模块问题 No module named _ssl的方法
python安装完毕后,提示找不到ssl模块: [www@pythontab.com ~]$ python Python 2.7.15 (default, Oct 23 2018, 18:08:43) ...
- java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...
excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...
- python如何移动文件却不覆盖现有文件_解决python不能覆盖文件内容的方法
解决python不能覆盖文件内容的方法 发布时间:2020-07-15 11:42:17 来源:亿速云 阅读:62 作者:清晨 这篇文章将为大家详细讲解有关解决python不能覆盖文件内容的方法,小编 ...
最新文章
- 双圆弧插值算法(一)
- 全球最具影响力AI机构TOP100排名:中国5所高校1所研究院入围
- 终于,Geoffrey Hinton那篇备受关注的Capsule论文公开了
- java好还是python好-现在学Python还是Java好呢?
- java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...
- (1)谷歌2011校园招聘:
- php菲波那切数列,php如何实现菲波那切数列
- 使用PerfView监测.NET程序性能(四):折叠,过滤和时间范围选择
- SSH之Hibernate总结篇
- 新型冠状病毒数据抓取及整理详细流程
- php中array_merge()与$arr1+$arr2两个数组直接相加的区别
- 你中招了吗?《心理学常见误区》
- 计算机中级职称工作小结,个人专业技术工作小结
- php工作态度,工作质量,取决于工作态度
- 实例分割最全综述(上):二阶段实例分割和一阶段实例分割
- 数据基础设施,证券行业跑赢时代的新引擎
- python opencv入门 光流法(41)
- 阿里云盘视频m3u8播放-python+vue3实现
- java主程序怎样调用子程序_主程序调用子程序使用( )指令。
- 论文阅读 HiGAN:《Semantic Hierarchy Emerges in Deep Generative Representations for Scene Synthesis》
热门文章
- Eygle力荐:Oracle 19c升级文档、视频、问答集锦
- 《4月份数据库技术通讯》.pdf
- Oracle 20c 新特性:SQL 宏支持(SQL Macro)Scalar 和 Table 模式
- 带你认识三种kafka消息发送模式
- 鸿蒙轻内核源码分析:虚拟内存
- 带你掌握C++中三种类成员初始化方式
- 一大波人气博主袭来,现场直播华为全联接2020!
- c语言程序2048_C语言2048小游戏演示和说明
- linux一切皆是文件_Linux 的虚拟文件系统(真正理解“一切皆文件”)
- Android笔记 actionbar学习