Ok, j'ai trouvé et je me réponds à moi-même. Je poste ici en espérant que çà serve à d'autres :
En se basant sur :
* <
https://docs.micropython.org/en/latest/library/uos.html>
* <
https://stackoverflow.com/questions/426 ... given-file>
On peut faire :
Code: Select all
>>> import os
>>> statvfs = os.statvfs('/')
Par contre on ne peut pas poser comme en CPython:
Code: Select all
statvfs.f_frsize * statvfs.f_blocks # Size of filesystem in bytes
statvfs.f_frsize * statvfs.f_bfree # Actual number of free bytes
statvfs.f_frsize * statvfs.f_bavail # Number of free bytes that ordinary users
# are allowed to use (excl. reserved space
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
AttributeError: 'tuple' object has no attribute 'f_frsize'
En fait, en MicroPython, statvfs est un tuple ce qui ne permet donc pas l'accès direct aux propriétés :
Code: Select all
>>> statvfs
(4096, 4096, 352, 315, 315, 0, 0, 0, 0, 255)
En se basant sur la doc de la fonction statvfs du module uos (
https://docs.micropython.org/en/latest/ ... os.statvfs), on peut poser :
Code: Select all
>>> f_bsize, f_frsize, f_blocks,f_bfree,f_bavail, f_bavail, f_ffree, f_favail, f_flag, f_namemax=0,1,2,3,4,5,6,7,8,9
Ensuite, on peut faire facilement :
Code: Select all
>>> statvfs[f_frsize] *statvfs[f_bfree] # free
1290240
>>> statvfs[f_frsize] *statvfs[f_blocks] # total
1441792
>>> totalSize=statvfs[f_frsize] *statvfs[f_blocks]
>>> freeSize=statvfs[f_frsize] *statvfs[f_bfree]
>>> totalSize=statvfs[f_frsize] *statvfs[f_blocks] / 10**6 # en Mo
>>> freeSize=statvfs[f_frsize] *statvfs[f_bfree] / 10**6 # en Mo
>>> print(str(freeSize)+"/"+str(totalSize)+"Mo")
1.29024/1.441792Mo
>>> print(str(freeSize)+" Mo free /"+str(totalSize)+" Mo total")
1.29024 Mo free /1.441792 Mo total
On pourrait facilement mettre tout çà dans une petite fonction utilitaire. Et c'est cool de voir que l'on a plus de 1Mo effectivement libre sur le Pi Pico, ce qui est intéressant pour du datalogging, sans avoir besoin de connecter une carte SD. Par exemple, un fichier de 1440 lignes de data (1 mesure par minute pendant 24H) ne prend que 30Ko environ.