私はいくつかのバイナリファイルを解析しようとしており、Pythonのread()
関数がこのarticleとチュートリアルポイントarticleからの文字列を返すと仮定しました。なぜread()は文字列ではなくバイトを出力しますか?
しかし、自分がread()
をめちゃくちゃうったとき、私は読んだもの以外の何かを得ました。
>>> with gzip.open('RTLog_20150424T194428.gz') as f:
a = f.read(3)
print(a)
type(a)
b'use'
<class 'bytes'>
>>> a
b'use'
>>> str(a)
"b'use'"
>>> b = 'asdfasdfasdf'
>>> type(b)
<class 'str'>
>>>
自分で試験した場合、read()
コールの出力は<class 'bytes'>
オブジェクトではなく、<class 'str'>
オブジェクトを返しました。
私は何を得ていないのですか?
おそらく 'gzip.open'がファイルをバイナリモードで開くためです。 – vaultah
私が読んできたチュートリアルでは、バイナリファイルではなくテキストファイルを開いていると仮定しています。 – Dzhao
リンクしたページの例は、 'gzip.open'ではなく' open'を使っていることを示しています。これらの関数は 'mode'引数のデフォルト値が異なります。 – vaultah