「Pythonの基礎 - ファイル」の版間の差分

ナビゲーションに移動 検索に移動
314行目: 314行目:
   
   
  f.close()
  f.close()
</syntaxhighlight>
<br><br>
== バイナリファイル ==
バイナリファイルを読み込む場合、<code>open</code>関数のモードとして<code>rb</code>を指定する。<br>
<syntaxhighlight lang="python">
f = open('myfile.dat', 'rb')
</syntaxhighlight>
<br>
バイナリファイルのデータを読み込む場合、<code>read</code>メソッドを使用する。<br>
<code>read</code>メソッドの引数には、読み込むバイト数を指定する。<br>
引数を省略した場合は、<code>EOF</code>までのデータを全て読み込み、bytesオブジェクトとして返す。<br>
<syntaxhighlight lang="python">
read([size])
</syntaxhighlight>
<br>
バイナリファイルへ書き込む場合、<code>open</code>関数のモードとして<code>w</code>、<code>a</code>、<code>x</code>のいずれかに<code>b</code>を加えた<code>wb</code>、<code>ab</code>、<code>xb</code>のいずれかを指定する。<br>
なお、<code>w</code>、<code>a</code>、<code>x</code>の違いについてはテキストファイルの場合と同様である。<br>
<syntaxhighlight lang="python">
f = open('myfile.dat', 'wb')
f = open('myfile.dat', 'ab')
f = open('myfile.dat', 'xb')
</syntaxhighlight>
<br>
バイナリファイルにデータを書き込む場合、<code>write</code>メソッドを使用して、引数に指定したbytesオブジェクトをバイナリファイルに書き込む。<br>
<syntaxhighlight lang="python">
f = open('myfile.dat', 'wb')
f.write(b'ABCDEFG')
f.close()
f = open('myfile.dat', 'rb')
data = f.read()
print(data)
f.close()
# 出力
b'ABCDEFG'
</syntaxhighlight>
<br>
以下の例では、画像ファイルを1バイトずつ読み込み、読み込んだデータを新規作成したバイナリファイルに書き込んでいる。<br>
ソースコードの実行後、ソースコードと同階層のディレクトリにSample2.pngファイルが生成される。<br>
<syntaxhighlight lang="python">
fr = open('Sample1.png', 'rb')
fw = open('Sample2.png', 'wb')
while True:
    data = fr.read(1)
    if len(data) == 0:
      break
    fw.write(data)
fw.close()
fr.close()
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー