Python テキストファイル(CSVファイル)を読み込む方法

スポンサーリンク

PythonではCSVなどのテキストファイルを読み込むことができます。

CSVファイルやTXTファイルなどのテキスト形式のファイルの中身を取得したいケースがあります。

今回は、Pythonでテキストファイルを読み込む方法を解説します。

テキストファイルを読み込む

ファイル構文

# ファイルオープン
open(ファイル名, ファイルモード, encoding = エンコード方式)
# ファイルを全て読み込む
ファイル変数.read()
# ファイルを1行読み込む
ファイル変数.readline()
# ファイルをリストに読み込む
ファイル変数.readlines()
# ファイルクローズ 
ファイル変数.close()

オープン

Pythonでテキストファイルを読み込む前に「open」でファイルをオープンし、使い終わったら「close」で終了します。

ファイルモード

ファイルモード 説明
r 読み込み用
w 書き込み用。上書き
a 書き込み用。追記
x 書き込み用。新規ファイル
b バイナリ用

encoding

  • shift_jis
  • euc_jp
  • utf-8

読み込み

コマンド 説明
read すべて読み取る
readline 1行読み取る
readlines リストに読み取る

 

例1. CSVファイルをリストで読み取る readlines

# ファイルをリストに出力
file = open('c:\\pg\\file.csv', 'r')
f_list = file.readlines()
file.close()
# リストから1行ずつ読み込む
for f_line in f_list:
    print(f_line)

#[結果] No1,No2,No3,No4,No5
#[結果] 1,2,3,4,5
#[結果] 11,12,13,14,15
#[結果] 21,22,23,24,25
#[結果] 31,32,33,34,35

Pythonの「open」でファイルをオープンしました。「r」なので読み取り専用モードでオープンしました。

「file.readlines」を使ってファイルの中身をリスト「file_lines」に取得しました。リストにすることでデータが扱いやすくなりました。

リスト「file_lines」を「for in」で取得し、CSVファイルの中身を1行ずつ取得しました。

この例では、エンコード方式を省略しましたが、省略するとOS標準のエンコードが使用されます。

パスの記述ですが、「\」をエスケープする必要があるため、「\」であれば「\\」と書きます。よって「c:\pg\file」の場合は「c:\\pg\\file」と書きます。

例2. CSVファイルを簡単に取得するwith ~ as

with open('c:\\pg\\file.csv', 'r', encoding = 'utf-8') as f_list:
for f_line in f_list:
    print(f_line)

#[結果] No1,No2,No3,No4,No5
#[結果] 1,2,3,4,5
#[結果] 11,12,13,14,15
#[結果] 21,22,23,24,25
#[結果] 31,32,33,34,35

例1と同じことを「with ~ as」を使って実現しました。コード量を比較すると「with~ as」を使った方がスマートになります。

「with open(~) as 変数」という構文になります。

「with ~ as」を使うとその中だけでファイル処理が有効になるため「close」が必要ありません。「read」も必要ありません。特に「close」は記述忘れの心配もあるため、記述の必要がないのはとても便利です。

例3. CSVファイルの中身をすべて読み取る read

file = open('c:\\pg\\file.csv', 'r', encoding = 'utf-8')
file_data = file.read()
file.close()
print(file_data)

#[結果] No1,No2,No3,No4,No5
1,2,3,4,5
11,12,13,14,15
21,22,23,24,25
31,32,33,34,35

Pythonの「file.read」を使ってファイルの中身をすべて「file_data」に取得しました。このような使い方はあまりしないかもしれませんね。

 

これで「readlines」「readline」「read」「with」を使ってCSVファイルの中身を取得することができました。

以上、Pythonでテキストファイル(CSV)を読み込む方法でした。

コメント