Python3ファイル読み込み方法|open()関数、with構文による例外処理など

Pocket

Python3でテキストファイルを読み込む方法

Python3でテキストファイルを読み込むにはopen()関数を用いてファイルオブジェクト(_io.TextIOWrapper)を取得します。

open()関数の書式

open(‘ファイルパス’, mode=’読み込みモード’, encoding=’エンコード’)

ファイルオブジェクトの基本操作

ファイルオブジェクトのread()メソッドはテキストファイルの全文をstr型で取得します。

一方、readlines()メソッドはテキストファイル内の1行1行を要素とするリストを返します。

close()メソッドでファイルを閉じます。

最も原始的なファイル読み込みのサンプルプログラム

通常、ファイルの読み書きを実装する場合、必ず例外処理を書いて確実にファイルをクローズできるようにしますが、ここでは例外処理を一切書かない場合の最もシンプルなPython3におけるファイル読み込みのサンプルプログラムを掲載しています。

<実行結果>

これはテストです。
これはテストです。
これはテストです。

例外処理について

ファイルの読み込み/書き込み時は確実にclose()が実行されるようにするために、
try~finally構文か、またはwith構文を利用します。

下記のPython3のサンプルプログラムではtry~finally構文を使って、予期せぬエラーが発生しても必ずファイルを閉じられるようにしています。

尚、try~except構文open()関数が失敗した場合のために使っています。

※with構文の使い方は下の方に掲載してあります。

テキストファイルを読み込みread()で全文を取得する

ファイルパスには絶対パスを指定しています。

指定したファイルパスにファイルが存在しない場合はエラーになります。

テキストファイルを読み込む場合、通常はmode=’r’でファイルオブジェクトを読み込みます。

今回はエンコーディングにutf-8を指定しましたが、Shift_JISを読み込む場合はencoding=’sjis’と書きます。

テキストファイルを読み込みreadlines()で全文を表示する

readlines()の戻り値はリスト型です。テキストファイルの1行が1要素に該当します。

またreadlines()で読み込むとき、改行文字(\n)も含まれます。そのためprint()すると下記のようになります。

これはテストです。

これはテストです。

これはテストです。

無駄な改行を消して綺麗にprint()するにはprint(line.replace(‘\n’, ”))等とし改行文字を空の文字列に置換するとうまくいきます。あるいはprint(line.strip())と書くことで改行コードを取り除くことができます。

(例)

f = open(‘c:/test/test.txt’, mode=’r’, encoding=’utf-8′)
try:
        text = f.readlines()
        for line in text:
                print(line.strip())
finally:
        f.close()

with構文を使ってファイルを読み込む場合

with構文を使えばtry~finallyによる例外処理を書かなくても確実にファイルを閉じることができます。またwith構文を利用する際はclose()を書かなくてOKです。自動的にwith構文の最後に、close()を呼んでくれます。

with構文の書式

with open() as 変数名:
        処理

with構文を用いて確実にclose()する場合のファイル読み込みのサンプルプログラム

(参考)Python3におけるテキストファイルへの書き込み

Python3におけるテキストファイルへの書き込みは下記サンプルプログラムのように書きます。

尚、wが上書きモードでaが追記モードです。

with構文を利用しているのでclose()を書く必要はありません。自動的にclose()されます。

<実行結果>

ファイルの書き込みに成功しました。

Python3リファレンスTOPへ戻る

この記事を読んでいる人はこんな記事も合わせて読んでいます♪

  • 初学者向け-Python3|クラスの定義方法とオブジェクト指向の習得法初学者向け-Python3|クラスの定義方法とオブジェクト指向の習得法 1、Python3でオブジェクト指向開発をするには? まずはオブジェクトの設計図にあたるクラスを定義する方法を習得する。そしてクラスからインスタンスを生成する方法を学ぶ。Java等に慣れ親しんでいる方は、最初、少しだけ、Pythonのクラス定義の方法にとまどうかもしれない。 というのもPythonのクラス内にメンバ変数(objectの属性)を定義するには、下記のように […] Posted in プログラミング, DB
  • Python3超入門【第9回】「ユーザー定義関数」Python3超入門【第9回】「ユーザー定義関数」 はじめに プログラミング初心者のためのPython3超入門講座の第9回目です。if文、for文、while文を学んでだいぶプログラミングの幅が広がってきたのではないでしょうか。今回は「関数」を自作する方法を詳細に解説します! あ、ちなみに関数っていうのはExcelでよく使うsum()関数とかaverage()関数と同じ意味です。Excelに詳しい方ならエクセルでもオリ […] Posted in 未分類
  • 【エクセルVBA】データが入力されている行の数を数えたい【エクセルVBA】データが入力されている行の数を数えたい 行の個数を数える方法 最も簡単な方法はアクティブセル領域を指定し、Rows.Countプロパティで行の個数を数えるやり方です。見出し(タイトル)行を除いて、データを含んだ行の数だけをカウントするために、「行の個数-1」と書くのを忘れないようにしましょう。 尚、アクティブセル領域とは空白で囲まれた使用中のセルのことです。アクティブセル領域内のどのセルに対してCurren […] Posted in 未分類
  • 【エクセルVBA】セル範囲の一番下のセルや一番右のセルを取得するには【エクセルVBA】セル範囲の一番下のセルや一番右のセルを取得するには セル範囲の端っこのセルを取得する方法 上記のようなExcel画面において、例えばA列の一番下のセル(A10セル)を取得するには、 Range.Endプロパティを用います。 EndプロパティはEnd(方向を表す定数)という書式で利用します。一番下を表す定数は、 xlDownです。 A列の一番下のセルを取得するサンプルコード Sub […] Posted in 未分類
  • 【エクセルVBA】Selectionプロパティの使い方!超わかりやすい!【エクセルVBA】Selectionプロパティの使い方!超わかりやすい! Selectionプロパティとは Excel […] Posted in 未分類
カテゴリー: 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA