Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import stat # Install stat.py from micropython-lib
- import sys
- import time
- SIX_MONTHS = 6 * 30 * 86400
- MONTH_NAME = ('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
- def ls(dir):
- print('%s:' % dir)
- entries = tuple((filename, os.stat(dir + '/' + filename)) for filename in os.listdir(dir))
- filtered_entries = []
- for entry in entries:
- filename = entry[0]
- if filename[0] != '.':
- filtered_entries.append(entry)
- total_size = sum((entry[1][stat.ST_SIZE] + 4095) // 4096 * 4 for entry in filtered_entries)
- print('total %d' % total_size)
- curr_time = time.time()
- sizes = [entry[1][stat.ST_SIZE] for entry in filtered_entries]
- if len(sizes) > 0:
- max_size = max(sizes)
- else:
- max_size = 0
- size_width = len('%d' % max_size)
- sorted_entries = sorted(filtered_entries, key=lambda e: e[0].lower())
- for entry in sorted_entries:
- filename = entry[0]
- filestat = entry[1]
- mode = filestat[stat.ST_MODE]
- num_links = filestat[stat.ST_NLINK]
- uid = filestat[stat.ST_UID]
- gid = filestat[stat.ST_GID]
- size = filestat[stat.ST_SIZE]
- mtime = filestat[stat.ST_MTIME]
- mode_str = ''
- mode_str += 'd' if stat.S_ISDIR(mode) else '-'
- mode_str += 'r' if mode & stat.S_IRUSR else '-'
- mode_str += 'w' if mode & stat.S_IWUSR else '-'
- mode_str += 'x' if mode & stat.S_IXUSR else '-'
- mode_str += 'r' if mode & stat.S_IRGRP else '-'
- mode_str += 'w' if mode & stat.S_IWGRP else '-'
- mode_str += 'x' if mode & stat.S_IXGRP else '-'
- mode_str += 'r' if mode & stat.S_IROTH else '-'
- mode_str += 'w' if mode & stat.S_IWOTH else '-'
- mode_str += 'x' if mode & stat.S_IXOTH else '-'
- ltime = time.localtime(mtime)
- time_str = MONTH_NAME[ltime[1]] + ' '
- time_str += '%2d ' % ltime[1]
- if mtime < curr_time - SIX_MONTHS or mtime > curr_time + SIX_MONTHS:
- time_str += ' %04d' % ltime[0]
- else:
- time_str += '%02d:%02d' % (ltime[3], ltime[4])
- print('%s %d %*d %s %s' % (mode_str, num_links, size_width, size, time_str, filename))
- for entry in sorted_entries:
- filename = entry[0]
- filestat = entry[1]
- mode = filestat[stat.ST_MODE]
- if stat.S_ISDIR(mode):
- print()
- ls(dir + '/' + filename)
- ls('.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement