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 :
- https://docs.micropython.org/en/latest/library/uos.html
- https://stackoverflow.com/questions/426 ... given-file
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