本記事ではPythonでファイル読み込みを行う方法について解説します。
単に読み込むだけでなく、一行ずつ読み込んだり、CSVファイルの一部の要素のみ取り出したりする方法に関してもまとめました。
ファイル読み込みについて分からないことがある方は参考にしてください。
Pythonでテキストファイルを読み込む方法
Pythonでテキストファイルを読みこむ方法について解説していきます。
ファイル全体を読み込む方法から一行ずつ読み込む方法まで説明します。
- ファイル全体を読み込む
- ファイルの一行目を読み込む
- ファイルを一行ずつすべて読み込む
1)ファイル全体を読み込む
まず、ファイルを最初から最後まで一括で読み込む方法について解説します。
一括で読み込みたい場合、readメソッドを使うことになります。
次のように記述することで、ファイル全体を読み込むことが可能です。
○コード例
f = open('input.txt', 'r')
data = f.read()
print(data)
f.close()
○テキストファイル中身
テスト1行目
テスト2行目
テスト3行目
○実行結果
まずopenメソッドでファイルを開く必要があります。
ファイルを開く場合、第二引数は『r』になる点には注意しましょう。
続いて、readメソッドによってファイル全体を読み込み変数に格納しています。
このようにreadメソッドを使うだけで簡単にファイル全体なら読み込めます。
2)ファイルの一行目を読み込む
続いて、ファイルの特定の行のみを読み込む方法を解説します。
特定の行だけ読み込みたい場合は、readlinesメソッドを使います。
次のように記述してみましょう。
○コード例
f = open('input.txt', 'r')
list = f.readlines()
print(list[0])
print(list[2])
f.close()
○実行結果
readlinesメソッドを使うことで、ファイルのデータを配列として保持することが可能です。
list変数は配列となっています。
そのため、list[0]とすれば1行目が、list[2]とすれば3行目が出力されるようになります。
3)ファイルを一行ずつすべて読み込む
ファイルを一行ずつすべて読み込む方法について解説します。
一行ずつ読み込む場合次のように記述します。
○コード例
f = open('input.txt', 'r')
for line in f:
print(line)
f.close()
○実行結果
上記のコードはfor文を使ってファイルの中身を一行ずつ取り出しています。
このやり方ならシンプルにファイルの取得が可能です。
なお、下記のようなやり方でも一行ずつ読み込むことができます。
○コード例
f = open('input.txt', 'r')
while True:
line = f.readline()
if line == '':
break
print(line)
f.close()
○実行結果
こちらはwhile文による無限ループを利用しています。
readlineメソッドによってファイルを一行ずつ読んでいき、最後にデータがなくなったら、無限ループを抜け出すようにしています。
こちらのやり方でも可能ですが、前者の方が簡単でしょう。
PythonでCSVファイルを読み込む方法
続いて、PythonでCSVファイルを読み込む方法について解説します。
次の手順に基づいて解説していきます。
- CSVファイルを読み込む
- CSVファイルを一行ずつ読み込む
- CSVファイルを二次元配列として読み込む
- CSVファイルから1つの要素のみ取り出す
1)CSVファイル全体を読み込む
最初に、CSVファイル全体を読み込む方法をみていきましょう。
といっても全体を読み込む方法は通常ファイルを読み込む方法と変わりません。
○コード例
with open('input.csv') as f:
print(f.read())
○CSVファイルの中身
1,2,3
4,5,6
7,8,9
○実行結果
openメソッドを使えば問題なく行なえます。
2)CSVファイルを一行ずつ読み込む
次に、CSVファイルを一行ずつ読み込む方法をみていきます。
一行ずつ読み込む場合、readerメソッドが必要になります。
ただ、readerメソッドを使う場合、標準ライブラリの『csv』をインポートしないといけません。
標準ライブラリをインポートする場合、ソースの冒頭にimport文を記述する必要があります。
CSVファイルを一行ずつ読み込むやり方は次の通りです。
○コード例
import csv
with open('input.csv') as f:
data = csv.reader(f)
for line in data:
print(line)
○実行結果
冒頭にimport文を記載し、csvライブラリを読み込んでいます。
readerメソッドによって、CSVファイルの中身を配列として読み込んでいます。
後はfor文によって配列を一行ずつ出力させています。
このようにcsvファイルを読みこむ場合は、readerメソッドが必要です。
3)CSVファイルを二次元配列として読み込む
続いて、CSVファイルを二次元配列として読み込む方法をみていきましょう。
○コード例
import csv
with open('input.csv') as f:
data = csv.reader(f)
l = [line for line in data]
print(l)
○実行結果
二次元配列として読み込む場合は、内包表記を使うとコードがすっきりします。
先程同様にreaderメソッドでCSVファイルを一行ずつ配列に格納しています。
『[line for line in data]』という記述によって、一行をさらに要素ごとに分割しています。
このように記述することで、二次元配列として読み込むことが可能です。
4)CSVファイルから1つの要素のみ取り出す
最後に、CSVファイルから各要素を1つずつ取り出す方法についてみていきましょう。
○コード例
import csv
with open('input.csv') as f:
data = csv.reader(f)
l = [line for line in data]
print(l[0][2])
print(l[2][1])
○実行結果
先程同様に、CSVファイルのデータを二次元配列に格納しています。
後は二次元配列の要素のインデックスを指定すれば、その要素が取り出せます。
まとめ
本記事ではPythonでファイル読み込みを行う方法について解説しました。
外部ファイルを読み込む処理は実際の開発でも多く用いられます。
Pythonの基礎スキルの1つと言えますのでぜひマスターしてください。
また、ファイルを削除したり作成したりする方法に関しては、【初級編2】Pythonでファイルを作成したり削除したりする方法を学ぼうで解説していますので、併せてお読みいただけると幸いです。