Espace disponible en Flash ?

Il est utile et intéressant de pouvoir savoir quel est l'espace disponible en mémoire Flash, la mémoire où sont stockés les fichiers. Pour cela, on dispose des fonctions utiles avec le module uos.

En se basant sur :

On peut faire :

>>> import uos as os
>>> statvfs = os.statvfs('/')
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 :

>>> 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 :

>>> 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 :

>>> 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.