#open関数とは
open関数は、フィいるの新規作成や保存、書き込みなどのファイル操作ができます。
##open関数で用いられる基本的なオプション
open関数は、以下のような形式で使えます。
open(ファイル名、オプション、文字エンコード)
・文字エンコードとは、ファイルに書き込む際にコンピュータ上で文字や記号を扱う際に割り振られている番号のことでUTF-8,Shift-JISなどがあります。
・オプションとは、ファイルをどのように開くのか、どのように書き込むのかなどを指定します。
代表的なオプションには、以下のものがあります。
1. 'w+':書き込み用で開きます。ファイル名に設定したものがすでに存在している場合はそのファイルに上書きします。
2. 'r+':読み込み用で開きます。
3. 'x':新規ファイルの書き込みとして使います。既存に存在している場合は末行に追加していく。
4. 'a':書き込む用で開きます。既存に存在している場合は末行に追加していく。
5. 'b':バイナリーモードで開きます。'rb'や'wb'などの使い方をする
6. 't':テキストモードで開きます。'rt'や'wt'などの使い方をする。デフォルトではtとなる。
##実用例
open関数を使ってファイル操作をしてみる
###'w'の場合(ファイル作成&書き込み、既存の場合は上書き保存)
w = open('test.txt', 'w')
w.write('1:テストです\n')
w.close()
結果
test.txtファイルが作成され、「1:テストです」と書き込ませれている。
また既存のファイルだった場合は、上書きされる
###'a'の場合(末行に追記する)
w = open('test.txt', 'a')
w.write('3:テストです\n')
w.close()
結果
test.txtの末行に「3:テストです」が追加される
###'r'の場合(ファイルを読み取る)
r = open('test.txt', 'r')
print(r.read())
r.close()
結果
以下のようにtest.txtに書かれている内容が表示される。
1:テストです
#テキストファイルの読み込みメソッド
・read() - ファイルを全て読み込み、その文字列データに対して処理を行う
・readlines() - ファイルを全て読み込み、1行毎に処理を行う
・readline() - 1行毎に読み込み、その処理を繰り返す
###実用例
alpha
bravo
charlie
# readでサイズ指定あり
with open('sample.txt') as f:
contents = f.read(10)
print(contents)
print('---')
# readでサイズ指定なし
with open('sample.txt') as f:
contents = f.read()
print(contents)
print('---')
# readlineで1行だけ読み込み
with open('sample.txt') as f:
line = f.readline()
print(line)
print('---')
# readlinesで一括読み込み
with open('sample.txt') as f:
lines = f.readlines()
print(lines)
結果
alpha
brav
—
alpha
bravo
charlie
—
alpha
—
[‘alpha\n’, ‘bravo\n’, ‘charlie\n’]
- 1つ目はread(サイズ指定あり(改行いれて文字10個まで)のケースです。
- 2つ目はread(サイズ指定なし)のケースです。ファイルの中身を全てを読み込みました。
- 3つ目はreadlineのケースです。1行だけ読み込みました。
- 4つ目はreadlinesのケースです。ファイルの中身全て読み込み、結果は文字列のリストになりました。
#バイナリやテキストについて
パソコンで扱うファイルは、テキストファイルとバイナリファイルの2種類しかない。
##テキストファイルとは
文字を表すデータは、文字コード表に乗っているデータだけが書かれているファイル。
##バイナリファイルとは
テキストファイル以外のもの全てを指します。画像ファイルや音楽ファイル、動画ファイルなどです。簡単にいうとメモ帳で開けないファイルは全てバイナリファイルです。
binaryは「2進数」という意味です。文字コードのルールを完全無視したデータが書かれています。
参照
https://techacademy.jp/magazine/24509
https://www.sejuku.net/blog/60333
https://techacademy.jp/magazine/20626
https://quartet-communications.com/info/topics/3182