Python3 エラー: Initial_value は str か None でなければならない、StringIO を使用する場合
2023-08-09 19:21:24
質問
からコードを移植しているときに
python2
から
3
というように、URLから読み込むと、このようなエラーが発生します。
TypeError: initial_valueはbyteではなく、strかNoneでなければなりません。
import urllib
import json
import gzip
from urllib.parse import urlencode
from urllib.request import Request
service_url = 'https://babelfy.io/v1/disambiguate'
text = 'BabelNet is both a multilingual encyclopedic dictionary and a semantic network'
lang = 'EN'
Key = 'KEY'
params = {
'text' : text,
'key' : Key,
'lang' :'EN'
}
url = service_url + '?' + urllib.urlencode(params)
request = Request(url)
request.add_header('Accept-encoding', 'gzip')
response = urllib.request.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO(response.read())
f = gzip.GzipFile(fileobj=buf)
data = json.loads(f.read())
この行で例外が発生します
buf = StringIO(response.read())
python2を使用すると、正常に動作します。
どのように解決するのですか?
response.read()
のインスタンスを返します。
bytes
一方
StringIO
はテキストのみのインメモリストリームです。使用方法
BytesIO
を使用します。
から Python 3.0 の新機能 - Unicode 対 8 ビットではなく、Text 対 Data。
この
StringIO
とcStringIO
モジュールはなくなりました。その代わりにio
モジュールをインポートしてio.StringIO
またはio.BytesIO
で、それぞれテキストとデータ用です。
関連
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] TypeError: Python3でファイルへの書き込み時に'str'ではなくbytesのようなオブジェクトが要求される
-
[解決済み】 'str' オブジェクトに 'decode' 属性がない。Python 3 エラー?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] ディスクに書き込まずに.zipファイルをダウンロードし、解凍する方法