Print the name and file size of all the files on the SD card
import board, sys, os
import busio
import digitalio
import storage
import sdcardio
# Setup the SPI connection
cs = digitalio.DigitalInOut(board.xSDCS)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
# Connect to the card and mount the filesystem.
sdcard = sdcardio.SDCard(spi, cs)
# Use the filesystem as normal! Our files are under /sd
vfs = storage.VfsFat(sdcard)
storage.mount(vfs, "/sd")
sys.path.append("/sd")
# Helper function to print the contents of the SD
def print_directory(path, tabs=0):
for file in os.listdir(path):
try:
stats = os.stat(path + "/" + file)
filesize = stats[6]
isdir = stats[0] & 0x4000
if filesize < 1000:
sizestr = str(filesize) + " by"
elif filesize < 1000000:
sizestr = "%0.1f KB" % (filesize / 1000)
else:
sizestr = "%0.1f MB" % (filesize / 1000000)
prettyprintname = ""
for _ in range(tabs):
prettyprintname += " "
prettyprintname += file
if isdir:
prettyprintname += "/"
print('{0:<40} Size: {1:>10}'.format(prettyprintname, sizestr))
#recursively print directory contents
if isdir:
print_directory(path + "/" + file, tabs + 1)
except:
print('error')
pass
print('Files on filesystem:')
print('--------------------')
print_directory("/sd")