ファイル(Python)

Pythonのプログラムではデータと処理を別々のファイルに分け、データが書かれたファイルから、処理が書かれているプログラムでファイルを読み込み、書き込み処理をすることが出来ます。

初めにファイルの読み込みですが、ファイルの読み込みは以下の3ステップで実行する流れとなります。

  1. 開く
  2. 読む
  3. 閉じる




↓↓↓ITエンジニアのおすすめ学習・開発環境の詳細へ↓↓↓

「Python」データを別ファイルで作成するプログラム

プログラムでは、規模の大きなシステムになると複数のファイル間でデータをやり取りすることもできます。

以下では、Pythonのプログラムを記述したファイルに書き込んでいたデータで標準入力を取得していたように、データを別ファイルから読み込んで処理する方法を紹介します。

ファイルデータは「open()関数」でファイルを開く

プログラムにおいて、ファイル内のデータを読み込むには、ファイルを開く動作をプログラムから実施します。
Pythonではopen()関数でファイルを開きます。

ファイルに関数の戻り値を変数に代入しておき、そのメソッドでファイルを操作します。

read_file = open('test.txt')

ファイルを開いた後はメソッドでファイルを操作

上記でopen()関数でファイルを開いた後、これからファイル内のデータを読み込みます。
ファイル内のデータを読み込むには、read()メソッドを使用します。

ファイルを使い終わった後は、プログラムから開いたファイルを閉じる必要があります。
この時、ファイルをopen()したら、必ずclose()をしましょう。

この開閉の動作は重要です。
コンピューターがファイルを同時に開くことができる数には上限があります。
ファイルを閉じることをしない場合は、ファイルが開けなくなる不具合が発生する場合があります。

ファイルの中身を読み込むread()メソッド

data = read_file.read()

上記では読み込んだデータを入れる変数「data」に、read()メソッドでファイル内のデータを読み込みます。

ファイルを閉じるclose()メソッド

read_file.close()

ファイルを読み込むプログラム

以下ではデータを書き込んだファイルを読み込むプログラムを作成します。
まずはプログラムで読み込む対象のファイルを作成します。

ファイルの中身は名前と3教科の点数を作成します。
さらに名前と点数をカンマ区切りで入力します。

test.txt

Kobayashi, 90, 100, 95
Tanaka, 87, 96, 76
Sato, 69, 97, 86

次にプログラムを作成します。

以下では、上記で作成した「test.txt」を読み込んでデータを取り出すプログラムとなります。
ファイル名「open00.py」となります。

open00.py

read_file = open('test.txt')   ①
data = read_file.read()      ②
read_file.close()          ③
print(data)             ④
  1. ファイルを開く
  2. データを読み込む
  3. ファイルを閉じる
  4. データ表示

プログラム実行

以下で作成したプログラムを実行します。

実行結果では、「test.txt」の中身が読み込まれて正常に中身のデータを出力した結果となります。

$ python3 open00.py 
Kobayashi, 90, 100, 95
Tanaka, 87, 96, 76
Sato, 69, 97, 86

【Python】プログラム実行結果をファイルに書き込む

プログラムの実行結果をファイルに書き込む一連の動作は、ファイルを読み込む動作とは異なります。
ファイルに対して、読み込むのか書き込むのかは以下のモードを利用します。

  • 読み込み用にファイルを開く:「読み込みモード」
  • 書き込み用にファイルを開く:「書き込みモード」

ファイルを「書き込みモード」で開くプログラムの書き方

ファイルを書き込みモードで開く場合は、「open()関数」で2番目の引数にモードを指定します。

今回はファイルに書き込むので、「w」(Writeの頭文字)を指定するとファイルを書き込みモードで開きます。

file = open('test.txt', 'w')
  1. file = 変数
  2. open = open関数
  3. test.txt = 読み込むファイル名
  4. ‘w’ = 書き込みモードを指定

書き込みモード’w’は上書き保存

ファイルの書き込みモードには以下の2つの特徴があります。

  • ファイルが存在しない場合は新規でファイルを作成
  • ファイルが存在する場合は上書き保存、もしくは追記

open(‘test.txt’, ‘w’)を実行した際、open()関数はファイルが存在しない場合、新規に「test.txt」ファイルを作成し、書き込みモードで開きます。
「test.txt」がすでに存在する場合は、open()関数はファイルの中身をすべて削除し上書きをしますので注意しましょう。

ちなみに現在あるファイルのデータに追記する場合は ’a’ を使用します。

ファイルにデータを出力させるプログラム

「test.py」というファイルを作成し、以下のようにファイルにデータを書き込むプログラムを作成します。

file = open('test.txt', 'w')
file.write('test Hello!')
file.close()
  1. open関数で書き込みモードを開く
  2. file.writeでデータを書き込み
  3. file.close()でファイルを閉じる

プログラム実行結果

以下で作成したプログラムを実行します。

>python test.py
>type test.txt
test Hello!

>

「type test.txt」コマンドでファイルの中身を表示します。

ファイルが作成され、中身にデータが書き込まれたことが確認できます。

ファイルの上書き

以下では同じファイルに対して書き込むデータを「test rewirte!」に変更し、上書きされることを確認しています。

file = open('test.txt', 'w')
file.write('test rewrite!')
file.close()

実行結果

>type test.txt
test Hello!
>python test.py
>type test.txt
test rewrite!

>

「test Hello!」が「test rewrite!」と上書きされています。

複数データの書き込み

プログラムで複数のデータを書き込みたい場合は以下のように何度かwrite()メソッドを呼び出し、複数データを書き込みます。

file = open('test.txt', 'w')
file.write('test Hello!')
file.write('test Python!')
file.close()

実行結果

プログラムを実行して、中身をみると、1行に、書き込まれたデータが表示されます。

>python test.py
>type test.txt
test Hello!test Python!

>

「複数行」データの書き込み
上記では複数データを書き込んでも1行でデータが表示されます。
データの間を改行したい場合は「改行コード」を書き込む必要があります。

Pythonでは「n」と書くことで改行されます。
Windowsでは「¥」キー、MacOSでは「option」+「¥」キーを押します。

file = open('test.txt', 'w')
file.write('test Hello!n')
file.write('test Python!n')
file.close()

実行結果

>type test.txt
test Hello!
test Python!

>

以上が、Pythonのファイル読み込み・書き込みプログラムとなります。

エンジニアのオンライン学習

エンジニアにおすすめのオンライン教材比較
ITエンジニアが自宅で学習ができるオンラインスクール比較

エンジニアのおすすめ学習「Progate」と「Udemy」比較

最新情報をチェックしよう!