13,069
回編集
| 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> | ||