まず読むべきものは MicroPythonの “os” クラスのドキュメントである。基本的にファイルシステム関係はこのクラスで取り扱うことになる。
- os – basic “operating system” services — MicroPython 1.19.1 documentation
https://docs.micropython.org/en/latest/library/os.html#filesystem-access
基本操作
使う前に、まず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'>