MicroPython + WebREPLでファイルシステムを弄る


まず読むべきものは MicroPythonの “os” クラスのドキュメントである。基本的にファイルシステム関係はこのクラスで取り扱うことになる。

基本操作

使う前に、まずimportする。

>>> import os

importしないと “NameError: name ‘os’ isn’t defined” というエラーが出る。使いたいのはだいたいこのへんの関数だと思う。

  • pwd → os.getcwd()
  • cd → os.chdir(path)
  • ls → os.ilistdir()
  • cd → os.mkdir(path)
  • rm → os.remove(path)
  • rmdir → os.rmdir(path)
  • mv → os.rename(old_path, new_path)

ディレクトリ掘ってファイルを置きたい

WebREPLを使うとファイルのアップロード & ダウンロードができる。何も考えずにただアップロードするとルートディレクトリに置かれるが、量が多くなってきたらちゃんとディレクトリを作って (os.mkdir(path) で作れる) 整理整頓したい。方法は以下の2つである。

  • os.chdir(path) でカレントディレクトリを変更してからアップロードする。WebREPLでアップロードしたファイルは基本的にカレントディレクトリ直下に置かれる。
  • 既存のファイルをどこか他所のディレクトリに移動したい場合は os.rename(old_path, new_path) が使える。ただしmvコマンドとは違い「new_path にディレクトリパスだけを指定したらファイル名そのままで移動してくれる」という機能はない。たとえば fuga.py をディレクトリ hoge に移動したい場合、os.rename(”fuga.py”, “hoge/fuga.py”) としないとダメ。os.rename(”fuga.py”, “hoge”) は許されない。

ちなみに、ディレクトリの下にファイルを置いた場合、MicroPython WebREPLでのダウンロード時にはカレントディレクトリからの相対パスを指定すればOK。たとえばこんなふうに。

忘れちゃった時は

けっこう頻繁に使うわりには、関数名が微妙に覚えにくい。困ったら help(os) する。

>>> help(os)
object <module 'uos'> is of type module
  __name__ -- uos
  uname -- <function>
  urandom -- <function>
  dupterm -- <function>
  dupterm_notify -- <function>
  ilistdir -- <function>
  listdir -- <function>
  mkdir -- <function>
  rmdir -- <function>
  chdir -- <function>
  getcwd -- <function>
  remove -- <function>
  rename -- <function>
  stat -- <function>
  statvfs -- <function>
  mount -- <function>
  umount -- <function>
  VfsFat -- <class 'VfsFat'>
  VfsLfs2 -- <class 'VfsLfs2'>