Python3.6 f.write()関数の符号化問題

1253 ワード

最近pythonの宿題をしています.内容は中国語の分詞です.
与えられたword 2 vec()関数はutf-8符号化文字列しか処理できません
そして,f.write()関数でファイルを書き込む場合,常にGBK符号化で書き込むことが分かった.
ネットでたくさんの資料を調べたが,手がかりが見つからなかった.
その後、Cプログラム設計で述べたバイナリストリームとテキストストリームの書き込みを思い浮かべ、Pythonがファイルにバイナリストリームを書き込むことができるかどうかをふと思いついた.
調べてみると、やっと2つの解決策が見つかりました.
f1 = open("c:\\0415.txt",'rb+')
f2 = open("c:\\0415_2.txt", 'r+',encoding='utf-8')

f 1はバイナリストリームの読み書き、f 1である.write(str.encode('utf-8'))はutf-8符号化文字列strをバイナリストリームでファイルに書き込むことができる
f 2はテキストストリームの読み書きである、指定符号化フォーマットはutf-8,f 2である.write(str)はstrをutf-8符号化文字列に自動的に変換してファイルに書き込む.