久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

解決Python 寫文件報錯TypeError的問題

瀏覽:55日期:2022-07-07 13:33:13

處理上傳的文件:

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 編程
相關文章:
主站蜘蛛池模板: 巴林左旗| 玉山县| 郓城县| 扎囊县| 公安县| 慈溪市| 屯昌县| 盱眙县| 旺苍县| 连州市| 内江市| 波密县| 中山市| 甘泉县| 新余市| 托克逊县| 台北县| 临泉县| 岳普湖县| 南召县| 金堂县| 崇仁县| 安义县| 仁寿县| 双城市| 子长县| 沙河市| 五原县| 沈阳市| 安国市| 恩平市| 宁蒗| 德令哈市| 额尔古纳市| 贵港市| 辽源市| 台东县| 陆川县| 潮州市| 芷江| 安乡县|