Python | CSVファイルの読み出し方法
公開日:2021/6/8
Pythonには,コードを記述することによってCSVファイル内を読み出す方法がある.以下に「"open"を利用してファイルを読み出す」,「"close"を利用してファイルを閉じる」,「"with"を利用してファイルを読み出す」の3構成でファイルの読み出し方法を記す.
◆実施環境
Python 3.8.8
■準備
現在以下URL(カレントディレクトリ)で開発しているので,"210517_python development"フォルダの直下に"test"のいう名のフォルダ,その中にCSVファイルである"reading.csv"を作成した.
“PS C:\Users\shiro\Desktop\210517_python development>"
CSVファイルにアクセスするためのファイルパスは以下になる.
“test/reading.csv"
なお,CSVファイルには,以下を事前に書き込んだ.
Hello World
Good morning
1,2,3,4
こんにちは
- “open"を利用してファイルを読み出す
ファイルパスと以下(a)~(d)の関数を用いてファイルを様々な方法で読み出すことができる.
(a) read: 全てのデータを読み出す."()"にはサイズを記述できる.
(b) readlines: すべてのデータをリストで読み出す.
(c) readline: 1行だけデータを読み出す.
(d) open: “()"には以下主要な引数を入力可能.
・filename: テキストファイルやCSVファイルなどのファイルオブジェクト
・mode: 読み込みには"r",上書きには"w",追記には"a"などがある
・compresslevel: modeが"w" or “a"の場合に圧縮レベルを1~9まで指定できる
・encoding: “utf-8″や"shift_jis"などを指定できる
・errors: エラーを返す.デフォルトは"strict", 他に"replace", “ignore"などがある
・newline: 改行を指定可能."None", 「"」, “\n", “\r", “\r\n"を指定できる
以下に上記関数を用いたファイルの読み出し構文を記述する.
# 1の処理(ファイル内容すべてを読み出す)
fpath = 'test/reading.csv' # ファイルパス
f = open(fpath,mode='r',encoding='utf-8')
line = f.read() # すべてを読み込むので()内はブランク
print(line)
# 2の処理(ファイル内容の10文字のみ読み出す)
file_path = 'test/reading.csv'
f = open(file_path,mode='r',encoding='utf-8')
line = f.read(10) # 10文字読み出すので,"Hello Worl"が出力
print(line)
# 3の処理(リストにファイル内容をすべて読み出す)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
lines = f.readlines()
print(lines)
# 4の処理(1行目のみ読み出す:readlineにする)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
line = f.readline()
print(line)
# 5の処理(ファイル内容を1行ずつ読み出す)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
line = f.readline()
while line:
print(line.rstrip('\n'))
line = f.readline()
# 6の処理(ファイル内容を,セイウチ演算を利用して,1行ずつ読み出す)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
while (line := f.readline()):
print(line.rstrip('\n'))
■実行結果
# 1の結果
Hello World
Good morning
1,2,3,4
こんにちは
# 2の結果
Hello Worl
# 3の結果
['Hello World\n', 'Good morning\n', '1,2,3,4\n', 'こんにちは\n', '\n']
# 4の結果
Hello World
# 5の結果
Hello World
Good morning
1,2,3,4
こんにちは
# 6の結果
Hello World
Good morning
1,2,3,4
こんにちは
- “close"を利用してファイルを閉じる
ファイルを開けたままにしておくと,メモリを浪費したり,他の処理でファイルを開けなくなる可能性がある.そのため,ファイルを閉じる関数である"close()"を利用する.以下にclose関数を用いた,ファイルを閉じる構文を記述する.
# 1の処理
fpath = 'test/reading.csv' # ファイルパス
f = open(fpath,mode='r',encoding='utf-8')
line = f.read()
print(line) # 処理は実行される
f.close() # ファイルを閉じる処理
line = f.read()
print(line) # ファイルが閉じているため,エラーが出力
■実行結果
# 1の結果
Hello World
Good morning
1,2,3,4
こんにちは
ValueError: I/O operation on closed file.
- “with"を利用してファイルを読み出す
ファイルの読み出しに"open"を用いると,ファイルを閉じる"close"が必須になる.だが,"with"を利用してファイルを読み出すと,自動的にファイルは閉じる.以下に"with"と"as"を用いた構文を記述する.
# 1の処理(withを用いた構文)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
with open(fpath,mode='r',encoding='utf-8') as f:
line = f.read()
print(line)
# 2の処理(withを用いた構文, 構文外はエラー出力)
fpath = 'test/reading.csv'
f = open(fpath,mode='r',encoding='utf-8')
with open(fpath,mode='r',encoding='utf-8') as f:
line = f.read()
print(line) # 処理は実行される
line = f.read()
print(line) # ファイルが閉じているため,エラーが出力
■実行結果
# 1の結果
Hello World
Good morning
1,2,3,4
こんにちは
# 2の結果
Hello World
Good morning
1,2,3,4
こんにちは
ValueError: I/O operation on closed file.
以上