第21回.CSV読み込みとopen()関数とwith文

Pythonの標準ライブラリのcsvを使いCSVファイルを読み込みます。
ファイルをオープンするにはopen()関数を使いますが、このときwith文を使うととても便利です。
目次
open()関数
または、ラップするファイルの整数のファイルディスクリプタです。
指定可能なモードは次の表の通りです。
文字 | 意味 |
'r' | 読み込み用に開く (デフォルト) |
'w' | 書き込み用に開き、まずファイルを切り詰める |
'x' | 排他的な生成に開き、ファイルが存在する場合は失敗する |
'a' | 書き込み用に開き、ファイルが存在する場合は末尾に追記する |
'b' | バイナリモード |
't' | テキストモード (デフォルト) |
'+' | open for updating (reading and writing) |
このオプションはテキストモードでのみ使用してください。
Codec | 別名 |
shift_jis | csshiftjis, shiftjis, sjis, s_jis |
shift_jis_2004 | shiftjis2004, sjis_2004, sjis2004 |
shift_jisx0213 | shiftjisx0213, sjisx0213, s_jisx0213 |
utf_32 | U32, utf32 |
utf_32_be | UTF-32BE |
utf_32_le | UTF-32LE |
utf_16 | U16, utf16 |
utf_16_be | UTF-16BE |
utf_16_le | UTF-16LE |
utf_7 | U7, unicode-1-1-utf-7 |
utf_8 | U8, UTF, utf8, cp65001 |
utf_8_sig | ※UTF-8(BOM付き) |
上記以外は、公式ドキュメント - 標準エンコーディング
open()関数の使用例

Windowsのメモ帳で開いた「file01.csv」です。
UTF-8(BOMなし)です。
f = open("./test/file01.csv", "r", encoding="utf-8")
print(f.read())
f.close()

with文
ブロックの前後でコードの初期化と終了処理が実行されます。
基本構文
with expression [as variable]:
with-block
with-blockの実行が終了後に、ブロックが例外を送出する場合であってもクリーンアップコードが実行できます。
with文の使用例
with open("./test/file01.csv", "r", encoding="utf-8") as f:
print(f.read())
print(f.closed)

csvの読み込み
これを使う事で簡単にcsvファイルを扱う事が出来ます。
csvファイルはイテレータ プロトコルをサポートしています。

Windowsのメモ帳で開いた「file01.csv」です。
UTF-8(BOMなし)です。
1行ずつ処理(print)する
import csv
with open("./test/file01.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)

2次元配列に取り込む
from pprint import pprint
import csv
with open("./test/file01.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
row = [r for r in reader]
pprint(row, width=20)

pprint
今回のサンプルデータであれば数値は適当な数値で(30でも40でも)構いません。
tsvの読み込み

Windowsのメモ帳で開いた「file01.txt」です。
ANSI(shift-jis)です。
from pprint import pprint
import csv
with open("./test/file01.txt", "r", encoding="shift-jis") as f:
reader = csv.reader(f, delimiter="\t")
row = [r for r in reader]
pprint(row, width=20)

スペース区切りなら、delimiter=" "と指定します。
同じテーマ「Python入門」の記事
第16回.Pythonの引数は参照渡しだが・・・
第17回.リスト内包表記
第18回.例外処理(try文)とexception一覧
第19回.import文(パッケージ・モジュールのインポート)
第20回.フォルダとファイルの一覧を取得(os,glob,pathlib)
第21回.CSV読み込みとopen()関数とwith文
第22回.CSV読み書き(csvモジュール)
第23回.pipコマンド(外部ライブラリのインストール)
第24回.エクセルを操作する(openpyxl)
第24回.エクセルを操作する(pywin32:win32com)
第26回.WEBスクレイピング(selenium)
新着記事NEW ・・・新着記事一覧を見る
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方
|生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する!
|生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。