18.Python3入門 〜ファイルの読み書き〜

 

今回はこのプログラム内のデータだけではなく、プログラム外のファイルデータを読みんだり、書き込んだりする方法をやっていきたいと思います。

 

ファイルの読み書きの手順

 

まずファイルの読み書きをするには以下の手順通り行います。

  1. ファイルを開く(open)
  2. ファイルに読み書き (read、write)
  3. 開いたファイルを閉じる (close)

といった操作を必ず行います。

 

ファイルの読み込み

 

では実際にファイルを読み込む操作をやっていきます。

書式

 

encoding というのはファイルの文字のエンコーディングが utf-8 なのでこのようになっています。文字エンコーディングが Shift_JIS で保存したファイルを読む時は、 encoding = “sjis” と記述しなければいけません。

このエンコーディングの設定を間違えなければファイル操作は簡単です。

 

では test1.txt というファイルを作って、読み込んでみましょう。

 

 

 

※重要
  プログラムファイルとテキストファイルは同じディレクトリ(場所)に保存してください。

 

実行します。

 

しっかりテキストに書いてあった文字列が表示されました。

 

ファイルに書き込む

 

次にファイルに任意の文字を書き込んでみましょう。

書式

 

ファイルを読み込む時と変わったところといえば、mode ですね。mode というのはファイルに対して、書き込むか読み込むかなど決めるものです。

では先ほどの test1.txt はそのままで、任意の文字列を書き込んでみましょう。

 

 

 

説明はいりませんね、ただ書き込みたい文字列を write() メソッドで指定してあげるだけです。

今回は実行しても、ターミナルには何も表示されません。test1.txt を開いてみましょう。すると、、、

 

 

あれ、”pythonが面白い”という文字が消えてますね。そうなんです、残念ながら更新されて新しい文字と置き換わってしまいます。

 

しかし、今ファイルに書き込んである文字が消えずに、新たな文字が末尾に追加する方法があります。こちらの表をご覧ください。

mode にはこのような種類があり、その時によって変えます。追記したい時は mode =”a” にするとできるというわけです。

実際に test.txt に追記してみましょう。

 

 

 

実行すると、 test1.txt のデータは、

 

このようになり、mode = “w” では新たな文字列に置き換わってしまいますが、mode=”a” なら最初からある文字はそのままで、末尾から追記されました。

 

with構文

 

with構文というのは、先ほどまでは close() を記述してファイルを閉じていましたが、自動で処理の最後にファイルを閉じてくれるというものです。

 

書式

 

では with構文 を使ってファイルに任意の文字列を書き込んでみましょう。(mode=”w”)

 

 

 

mode=”w” なので今まで入っていたデータは消去され、新しく入る文字列だけになります。
実行!!

 

with構文を使えば close() と書く手間が省けます。

 

テキストファイルを1行ずつ処理

 

普通にファイルを読み込んでは全ての文字が読み込まれ、1行ずつ読み込めません。1行ずつ読み込むには、for構文 を使います。

書式

 

open()メソッドの戻り値を for構文のループ範囲に指定してあげると、ファイルの内容を1行ずつ読み込みます。

 

では試してみましょう。

 

 

実行します。

 

自分でやっててあれなんですが、これでは1行ずつ読み込んでるかいまいちわからないので、任意の文字列を探すプログラムを書いてみます。

 

 

enumerate()関数インデックス番号要素を一緒に出力してくれる関数。
findメソッド () に入れた値を探すメソッドで、なければ -1 を返します。

  • for構文のところで2つ変数が設定してありますが、「 i にインデックス番号」「data に1行の要素」が入ってるイメージです。
  • if のところは data に入ってる要素で “python” があるか確かめています。あれば 0 以上の値を返し、print() が実行され、なければ -1 を返すのでそこで処理は終わります。

実行します。

 

4行目にあったので 4/iPhone と表示されました。これで1行ずつ処理されていることが理解できたのではないでしょうか。

 

今回は以上となります、ファイル操作はかなり使うので絶対にマスターしましょう!お疲れ様でした!

フォローする

スポンサーリンク


Python

Posted by pythonista