PicoSeries PR

RaspberryPi Pico シリーズでCSVファイルを使う方法 ~ MicroPython編 ~

記事内に商品プロモーションを含む場合があります

はじめに

今回はRaspberry Pi Pico シリーズのMicroPythonで、CSVファイルを使う方法を解説します。

Picoシリーズを使っていると「このデータCSVで出力したいな」と思うことありますよね。

MicroPythonのファームウェアでは、仮想ファイルシステムとPythonの強力な文字列処理が使えるため、ヘッダの読み飛ばしや、カンマでの分割など、パソコンと同じように読み書きすることができます。

ちょっとした入出力にちょうどいい方法なので、興味のある方はぜひご覧下さい。

Pico2でなくてもOK

記事ではRaspberryPi Pico2を使っていますが、Pico、PicoWでも同じ配線・プログラムで動作します。

ぜひお手持ちのPicoシリーズで、試してみてください。

環境

この記事で使用する環境は以下の通りです。

環境 バージョンなど 備考
開発用PCのOS Windows11 Windows10でもOKです
言語  MicroPython  Ver.1.24.0
開発環境 Thonny  Ver.4.1.4
ボード RaspberryPi Pico2 PicoシリーズならどれでもOKです。

RaspberryPi Pico2との接続

特別な機器の接続は必要ありません、Picoシリーズ単体でOKです。

使用する部品

RaspberryPi Pico 2

今からPicoを揃えるなら、RaspberryPi Pico2がおすすめです。Picoに比べて1.5倍高速で、値段はほぼ一緒です。

ノーブランド品
¥1,475 (2024/11/27 21:32時点 | Amazon調べ)

すぐに使えるキットもあります

ピンヘッダが半田付けされて、USBケーブルやピンのレイアウト表までついた、すぐに使えるセットもあります。

プログラム概要

今回のプログラムの概要は以下の通りです。

  • CSVファイルの書き込み
  • CSVファイルの読み込み
  • ヘッダの読み飛ばし
  • カンマで分割

実行結果

後述するプログラムの実行結果は以下の通りです。

CSVファイルが作成された後、その内容がThonnyのターミナル部分に表示されます。

CSVを読み書きするプログラムの実行結果の画像
実行結果

実行してもファイル表示されない場合は、設定から「更新」をクリックしてみてください。

CSVファイルが表示されない場合の対処方法
ファイルが表示されない場合は更新をクリック

全体コード

全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。

import os

# ファイル名を指定します。
fileName = "pico_spec.csv"

# 書き込みモードでファイルを開きます
f = open( fileName,  'w')

# 内容を書き込みます
f.write("名前,価格,無線の有無\n")
f.write("Pico,4ドル,なし\n")
f.write("Pico W,7ドル,あり\n")
f.write("Pico 2,5ドル,なし\n")

# 書き込み完了後にファイルをクローズします。 
f.close()

# 読み取りモードでファイルを再度開きます
f = open(fileName, "r")

# ヘッダーを飛ばします
next(f)

# 一行ずつ読み込んでカンマで分割して表示します
for line in f:
    words = line.split(",")
    print( "名前: " + words[0] )
    print( "価格: " + words )
    print( "無線: " + words )

# 書き込み完了後にファイルをクローズします。
f.close()

Picoシリーズ単体(Thonnyなし)の状態でプログラムを実行する場合は、Picoシリーズ本体に「main.py」という名前でプログラムを保存してください。

コードのポイント

CSVファイルの書き込み

open関数に書き込みを示す「w」と、ファイル名を指定して書き込みモードで開きます(ファイルがない場合は新規作成)。

open後はwrite関数を使って、先頭行にヘッダー(項目名などの情報)、次の行から、項目の内容をカンマ区切りで入力します。

書き込みが完了したらclose関数を使って、ファイルを閉じます。

# 書き込みモードでファイルを開きます
f = open( fileName,  'w')

# 内容を書き込みます
f.write("名前,価格,無線の有無\n")
f.write("Pico,4ドル,なし\n")
f.write("Pico W,7ドル,あり\n")
f.write("Pico 2,5ドル,なし\n")

# 書き込み完了後にファイルをクローズします。 
f.close()

項目を見やすく(そろえる)ためのスペースは入れないことをおすすめします。MicroPythonではreplace関数が使えないので、読み込み前後でスペースを消す処理が大変になります(泣)。

CSVファイルの読み込み

書き込みと同様に、open関数に読み込みを示す「r」とファイル名を指定して、ファイルを開きます。

# 読み取りモードでファイルを再度開きます
f = open(fileName, "r")

ヘッダの読み飛ばし

ファイルを開いたあとは、一行ずつ読み込む形になりますが、先頭行はヘッダー(項目名)のため、ファイルのデータ部分を使いたい場合は邪魔になります。

そのため、next関数を使って、一行目の読み取りをスキップします。

# ヘッダーを飛ばします
next(f)

カンマで分割

ヘッダをスキップしたあとは、データ行が続くためforループで、一行ずつ読みだします。
split関数にカンマを指定して、各要素をリストに分割します。

上記が完了したら、CSVの各要素にインデックスでアクセスできるようになります。(今回はprintで各要素を表示)

# 一行ずつ読み込んでカンマで分割して表示します
for line in f:
    words = line.split(",")
    print( "名前: " + words[0] )
    print( "価格: " + words )
    print( "無線: " + words )

# 書き込み完了後にファイルをクローズします。
f.close()

まとめ

今回はRaspberry Pi Pico シリーズのMicroPythonで、CSVファイルを使う方法を解説しました。

JSONやXMLも便利ですが、サクッと入出力しようと思うと、やっぱりCSVファイルが便利ですよね。

Picoシリーズ+MicroPythonであれば、PCでPythonを使うときと同じように、簡単にCSVファイルの読み書きができるようになります。

知っていると、ちょっとした改良やデバッグが楽になるので、気になった方はぜひ一度試してみてください。

参考になればうれしいです。

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index