[Python] テキストファイルを読み込ませる方法【初心者向け】

Python
この記事は約6分で読めます。
プログラムが嫌いになりそうな女性
プログラムが嫌いになりそうな女性

つちもぐらにそそのかされて、仕事を自動化してみようとPythonを始めてみたけど、ファイルの読み込ませ方がよく分からない。簡単な四則演算とかlistif文for文とかは直感的に理解できたんだけど。やっぱファイル修正は直接手でやるのが一番かな?

嫌われたくないモグラ
嫌われたくないモグラ

Pythonでファイルを読み込ませる方法について、つちもぐらが解説します。
事務作業の自動化は、ファイルを読み込ませて、プログラム内部で加工して、ファイル出力するのが基本です。

このページでは、まず最初にPythonでテキトファイルを簡単に読み込ませる方法を説明します。次に、Pythonの代表的なファイルオブジェクトのメソッドについても簡単に説明します。

本記事に記載のPythonスクリプト動作確認環境

OS : Windows10(64bit版)
Python version : 3.7.3

スポンサーリンク

Pythonで簡単にテキストファイルを読み込む方法

csvファイル “SampleTextSJIS.csv” を読み込む例を示します。
見て頂けると分かるように、読み込んで画面に表示するだけであれば、たったの3行です。

“SampleTextSJIS.csv” は名前の通り、Shift_JISの文字コードで保存されたファイルです。

Pythonソースコード(コピペでご使用ください)
f = open(r"C:\Python_source\01_TextFileRead\SampleTextSJIS.csv")
for line in f:
    print (line,end="")
実行結果(ファイルの中身と同じ)

出席番号,名前,点数
1,たろう,96
2,じろう,68
3,さぶろう,31

Pythonソースコードの詳細説明

1行目:: f = open(r”C:\Python_source\01_TextFileRead\SampleTextSJIS.csv”)

open()はPyhtonでファイルを開くための組み込み関数です。組み込み関数とは、名前の通り初めから組み込まれている関数なので、ソースコード中で読み込み宣言をしなくても、いきなり使えます。Pythonではよく使う関数を、組み込み関数として用意しています。

 open()の引数としてファイルのパスを与える事で、 open関数はファイルオブジェクトfを返します。

本ページのPythonソースコードでは、絶対パスで記載しています。Windows10であれば、Shiftキーを押しながら、ファイルを”右クリック->プロパティ->パスのコピー(A)” でコピーしたファイルのパスを”Ctrl+v”などで張り付ければ良いです。ファイルのパス先頭の r は、windowでパスを示す時のお守りと思って頂ければ良いです。

補足:\はPythonで特殊文字(エスケープシーケンス)を表すのに使用する

 Windowsのパス区切りは逆スラッシュ(\)を用いますが、 逆スラッシュはpythonでは改行(\n)等の特殊文字を表す時に使用します。そのため、open()にファイルパスを 文字列(“”で括られた範囲)で与える時は、文字列の先頭にrを記載する事で、文字列をそのままで扱ってねとPythonに教えてあげないと、ファイルのパスを正しく認識してもらえません。(rはrawの頭文字。このような文字列はraw文字列と呼びます)

raw文字列を使わない避策としては、
 1.”\” を “/” へ置き換える。
 2.”\” を “\\” へ置き換える。
がありますが、 raw文字列を使うのが一番シンプルな対応と思います。
 ちなみにMacやLinuxでは、パス区切りをスラッシュ(/)で示すので、ファイルのパスを示すのに、raw文字列を使用する必要はありません。

2行目:: for line in f:

pythonのfor文は、順番に並んだ変数(シーケンス型)を一つずつ取り出して処理していくイメージの動作となります。テキストのファイルオブジェクトfは、テキストファイルが1行ずつ繰り返し変数lineに文字列として渡されます。inはシーケンス型の変数と繰り返し変数の間に置かれるキーワードです。
 最後の : は、これから繰り返し処理をするブロックが始まる事を示しています。Pythonではブロックをインデントで示します

3行目:: print (line,end=””)

 2行目で与えられた繰り返し変数line組み込み関数print()でディスプレイに表示します。
 第2引数の end=”” はオプションです。プリント関数は標準で出力した文字を改行(\nを挿入) しますが、元のテキストファイルにも改行コードが含まれているため、 end=”” オプションを与えないと、出力には1行毎に空行が挿入される事となります。

補足:endには出力の末尾に付ける文字列を設定する。

 endには初期値で改行コード “\n” が与えられているので、endオプションに値を設定 しない場合は改行が追加される事となります。

Pythonファイルオブジェクトのメソッド

 Pythonソースコードの2行目では、ファイルオブジェクトfシーケンス型のデータとしてfor文で1行ずつデータを取り出しました。ただファイルオブジェクトは、ファイルデータにアクセスする為の各種メソッドを持っており、これらを状況に応じて選択して使用する事で、より柔軟にプログラムを書く事が可能となります。

 以下に代表的なファイルオブジェクトのメソッドを示します。

メソッド名動作
read()ファイルの中身全ての文字列を返す。改行部には改行コード”\n”が埋めこまれる。
readlines()ファイルの中身全てを1行事にリスト型として返す。
readline()ファイルの1行だけを文字列として返す。もう一度実行すると次の行を返す。

使い方は、どのメソッドもオブジェクトをドッド(.)で繋ぐだけです。
 例) FileALLString = f.read()
このread()メソッドでは、 変数 “FileALLString” の中には改行コード “\n” も含んだ文字列が代入されます。

FileALLStringの中身

‘出席番号,名前,点数\n1,たろう,96\n2,じろう,68\n3,さぶろう,31’

 本ページに記載したPythonのソースコードを編集してみて、動作を色々と確認してみてください。

 実際に自分でファイルを読み込ませてるソースコードを書く時は、実現したい動作を記述しやすいメソッドを選択すれば良いです。

 一般的に巨大なファイルを開くときはreadline()メソッドを使用するとファイルのデータを1行ずつ読み込むので、メモリの使用量を抑える事が出来て良いと言われています。しかしながら今どきのPCであれば、余程巨大なファイルでもない限り気にしなくて良いでしょう。

 それでは本日はこの辺とします。次回は色々な文字コードのファイルを読み込ませる方法について書きたいなと考えています。最後まで読んで頂き、ありがとうございました。

タイトルとURLをコピーしました