【Python】CSVファイルの読み込み/書き込み【説明動画あり】

Python

はじめに

「python csv 読み込み」や「python csv 書き込み」で検索されてる方にピッタリの記事だと思います。
動画もあるのでぜひ試してみてください。

今回はPythonを使ってファイルの読み書きを行います。
全体の流れは各項目をカンマで区切ったCSVファイルを作成し、任意の値を書き込みます。
その後、作成したCSVファイルを読み込みコンソールに出力するところまでを実施します。


使用する環境は下記ページで作成した環境をベースとして使っていきます。

準備

まずはCSVファイル読み書き用ソースコードを格納するフォルダと、CSVファイルの出力先の作業用フォルダを作成していきます。

作業用フォルダの作成

ベースは変わらず『C:\dev\Python』を使用します。
今回はソースコードを格納するフォルダの下に、CSVファイルの出力フォルダも作ります。

├─lib
│  └─python-3.10.4-embed-amd64 ※Pythonの格納先
└─Test000
    ├─Test000.py ※ソースコード
    └─csv ※CSVファイルの出力用フォルダ

CSVファイルの読み書き

CSVファイルを作成し、作成したCSVファイルに戦国武将の名前を書き込むサンプルを作成します。

フォルダとソースファイルの準備

Test000フォルダの下に『Test000.py』を作成します。
この段階では中身は空で大丈夫です。

├─lib
│  └─python-3.10.4-embed-amd64 ※Pythonの格納先
└─Test000
    ├─Test000.py ※ソースコード
    └─csv

書き込み

書き込む元ネタの用意

今回はCSVファイルに戦国武将の名前を書き込みたいので、『csv』モジュールをインポートします。
書き込む戦国武将の名前はリストにして元ネタとして用意しましょう。
ヘッダは必須ではないので、無くても大丈夫です。

#CSVファイルを扱うためのモジュール
import csv

#書き込み用の元ネタリスト
motonetaList = [
    ["No","Name"],
    ["1","織田信長"],
    ["2","武田信玄"],
    ["3","北条氏康"]
    ]

書き込み

CSVファイルを作成し書き込むところまで実施します。
ファイルの書き込み準備には『with open(…) as 変数名』を使用します。

  • csvファイル名(出力先のパスの指定も可)
  • ‘w’ 
    ※書き込み時は’w’ですが、読み込み時は’r’になります。
  • newline 
    ※指定しない場合システム標準の改行コードが使用されます。
    ※今回はLFを表す’\n’を指定します。
  • encoding
    ※指定しない場合システム標準の文字コードが使用されます。
    ※UTF8を表す’utf-8’を指定します。

CSVファイルオブジェクトと対応するCSVライターを作成し、
予め用意した元ネタのリストをループしながら書き込んでいきます。

## 
##割愛
##

#ファイル名を指定
csv_file = "./csv/user.csv"

#CSVファイルの書き込み
print("ファイルの作成を開始しました")
with open(csv_file , 'w', newline="\n",encoding="utf-8") as fileObject:
    #ライターを作成
    writer = csv.writer(fileObject)
    #元ネタをループし書き込む
    for line in motonetaList:
        writer.writerow(line)

print("ファイルの作成が完了しました")

実行

ここまできたら実行してみましょう。
Test000.pyがあるフォルダに移動し、python.exeの場所を指定してpythonコマンドを実行します。
「ファイルの作成が完了しました」のメッセージと、CSVファイルが出力されていれば成功です。

C:\dev\Python>cd Test000    

C:\dev\Python\Test000>C:\dev\Python\lib\python-3.10.4-embed-amd64\python Test000.py
ファイルの作成を開始しました
ファイルの作成が完了しました
No,userName
1,織田信長
2,武田信玄
3,北条氏康

読み込み

読み込むファイルの準備

今回は書き込み編で作成した戦国武将の名前を書き込んだCSVファイルをそのまま使用します。
ちなみにCSVファイルの中身はこんな感じです。
こちらを読み込んでコンソール出力していきます。

No,userName
1,織田信長
2,武田信玄
3,北条氏康

ソースコードは書き込み編を使いまわしするので、importや書き込み処理などはそのままでも大丈夫です。

#CSVファイルを扱うためのモジュール
import csv

## 
##割愛
##

読み込み

CSVファイルを読み込み、コンソールに出力するところまで実施します。
ファイルの読み込み準備には書き込み同様に『with open(…) as 変数名』を使用します。

  • csvファイル名(出力先のパスの指定も可)
  • ‘r’ 
    ※書き込み時は’w’ですが、読み込み時は’r’になります。
  • encoding
    ※指定しない場合システム標準の文字コードが使用されます。
    ※UTF8を表す’utf-8’を指定します。

CSVファイルオブジェクトと対応するCSVリーダーを作成し、
CSVファイルの中身をループしながらコンソールに出力していきます。

#CSVファイルを扱うためのモジュール
import csv

## 
##割愛
##

#CSVファイルの読み込み
print("ファイルの読込を開始しました")
with open(csv_file, "r", encoding="utf-8") as fileObject:
    #リーダーを作成
    reader = csv.reader(fileObject)
    #CSVファイルの中身をループしコンソールに出力する
    for line in reader:
        print(line)
print("ファイルの読込が完了しました")

実行

ここまできたら実行してみましょう。
Test000.pyがあるフォルダに移動し、python.exeの場所を指定してpythonコマンドを実行します。
CSVファイルの中身が出力されていれば成功です。

C:\dev\Python>cd Test000    

C:\dev\Python\Test000>C:\dev\Python\lib\python-3.10.4-embed-amd64\python Test000.py
ファイルの作成を開始しました
ファイルの作成が完了しました
ファイルの読込を開始しました
['No', 'userName']
['1', '織田信長']
['2', '武田信玄']
['3', '北条氏康']
ファイルの読込が完了しました

さいごに

いかがだったでしょうか。
CSVファイルの読み書きは、ログファイルの集計など様々なことに活用できそうですね。


コメント

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