python write() argument must be str, not bytes
7570 ワード
python pickle
python 2環境では、正常にファイルを書き込むことができ、ファイルを読み取ることができる.しゅつりょく
同じコードはpython 3環境ではpython 3で正常に読み込まれた出力を書き込むことができません
python 3で同じコードを実行するには、コード読み出しファイルにtypeプラスbを付ける必要があります.
このコードはpython 2とpython 3の両方で出力できます
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import pickle
dic = {
"key" : "111",
"id" : "222",
"value" : 333,
"name" : "nihao",
"age" : 18,
}
file_object = open('./test.pkl', 'w')
pickle.dump(dic,file_object,0)
file_object = open('./test.pkl', 'r')
obj = pickle.load(file_object)
print(obj)
python 2環境では、正常にファイルを書き込むことができ、ファイルを読み取ることができる.しゅつりょく
{'key': '111', 'age': 18, 'id': '222', 'value': 333, 'name': 'nihao'}
同じコードはpython 3環境ではpython 3で正常に読み込まれた出力を書き込むことができません
Traceback (most recent call last):
File "pktest.py", line 26, in <module>
pickle.dump(dic,file_object,0)
TypeError: write() argument must be str, not bytes
python 3で同じコードを実行するには、コード読み出しファイルにtypeプラスbを付ける必要があります.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import pickle
dic = {
"key" : "111",
"id" : "222",
"value" : 333,
"name" : "nihao",
"age" : 18,
}
file_object = open('./test.pkl', 'wb')
pickle.dump(dic,file_object,0)
file_object = open('./test.pkl', 'rb')
obj = pickle.load(file_object)
print(obj)
このコードはpython 2とpython 3の両方で出力できます
{'id': '222', 'value': 333, 'name': 'nihao', 'key': '111', 'age': 18}