解決Python 寫(xiě)文件報(bào)錯(cuò)TypeError的問(wèn)題
處理上傳的文件:
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)
測(cè)試報(bào)錯(cuò):
TypeError at /upload/
write() argument must be str, not bytes
把之前的打開(kāi)語(yǔ)句修改為用二進(jìn)制方式打開(kāi):
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)
沒(méi)有問(wèn)題了~
補(bǔ)充知識(shí):python3使用pickle讀取文件提示TypeError或者UnicodeDecodeError的解決辦法
python的pickle模塊實(shí)現(xiàn)了基本的數(shù)據(jù)序列和反序列化。通過(guò)pickle模塊的序列化操作我們能夠?qū)⒊绦蛑羞\(yùn)行的對(duì)象信息保存到文件中去,永久存儲(chǔ);通過(guò)pickle模塊的反序列化操作,我們能夠從文件中創(chuàng)建上一次程序保存的對(duì)象。
python2使用的是cPickle模塊,而在python3中cPickle已經(jīng)被取消,取而代之的是pickle模塊。
開(kāi)發(fā)過(guò)程中,我曾經(jīng)遇到一個(gè)奇怪的問(wèn)題,在讀取一個(gè)文件時(shí)候,使用python2的如下方式:
import cPickle
train, test, dicts = cPickle.load(open("./dataset/atis.pkl"))
是可以正常讀取文件的。
可是當(dāng)換做python3的方式讀取文件時(shí)候,如下:
import pickle
train, test, dicts = pickle.load(open("./dataset/atis.pkl"))
卻獲得了錯(cuò)誤提示,提示信息如下:
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
查詢錯(cuò)誤信息后得知解決辦法 鏈接,應(yīng)該指明用二進(jìn)制方式打開(kāi)文件,于是代碼改為:
import pickle
train, test, dicts = pickle.load(open("./dataset/atis.pkl", "rb"))
可是這時(shí)候錯(cuò)誤變成了:
Traceback (most recent call last):
File “Main.py”, line 4, in
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”, “rb”))
UnicodeDecodeError: ‘a(chǎn)scii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)
于是再次求助萬(wàn)能的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')
問(wèn)題終于的到了解決。
以上這篇解決Python 寫(xiě)文件報(bào)錯(cuò)TypeError的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中plot實(shí)現(xiàn)即時(shí)數(shù)據(jù)動(dòng)態(tài)顯示方法
這篇文章主要為大家詳細(xì)介紹了python中plot實(shí)現(xiàn)即時(shí)數(shù)據(jù)動(dòng)態(tài)顯示方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Django如何繼承AbstractUser擴(kuò)展字段
這篇文章主要介紹了Django如何繼承AbstractUser擴(kuò)展字段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法
下面小編就為大家分享一篇numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python實(shí)現(xiàn)的多進(jìn)程拷貝文件并顯示百分比功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的多進(jìn)程拷貝文件并顯示百分比功能,涉及Python多進(jìn)程、文件遍歷、拷貝等相關(guān)操作技巧,需要的朋友可以參考下2019-04-04
keras獲得model中某一層的某一個(gè)Tensor的輸出維度教程
今天小編就為大家分享一篇keras獲得model中某一層的某一個(gè)Tensor的輸出維度教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python實(shí)現(xiàn)判斷字符串中包含某個(gè)字符的判斷函數(shù)示例
這篇文章主要介紹了Python實(shí)現(xiàn)判斷字符串中包含某個(gè)字符的判斷函數(shù),涉及Python自定義函數(shù)中使用find方法針對(duì)字符串的簡(jiǎn)單判斷查找相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

