Advertisement
Guest User

Untitled

a guest
Jul 28th, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. import os
  2. import stat # Install stat.py from micropython-lib
  3. import sys
  4. import time
  5.  
  6. SIX_MONTHS = 6 * 30 * 86400
  7. MONTH_NAME = ('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
  8.  
  9. def ls(dir):
  10. print('%s:' % dir)
  11. entries = tuple((filename, os.stat(dir + '/' + filename)) for filename in os.listdir(dir))
  12. filtered_entries = []
  13. for entry in entries:
  14. filename = entry[0]
  15. if filename[0] != '.':
  16. filtered_entries.append(entry)
  17.  
  18. total_size = sum((entry[1][stat.ST_SIZE] + 4095) // 4096 * 4 for entry in filtered_entries)
  19. print('total %d' % total_size)
  20.  
  21. curr_time = time.time()
  22.  
  23. sizes = [entry[1][stat.ST_SIZE] for entry in filtered_entries]
  24. if len(sizes) > 0:
  25. max_size = max(sizes)
  26. else:
  27. max_size = 0
  28. size_width = len('%d' % max_size)
  29.  
  30. sorted_entries = sorted(filtered_entries, key=lambda e: e[0].lower())
  31.  
  32. for entry in sorted_entries:
  33. filename = entry[0]
  34. filestat = entry[1]
  35.  
  36. mode = filestat[stat.ST_MODE]
  37. num_links = filestat[stat.ST_NLINK]
  38. uid = filestat[stat.ST_UID]
  39. gid = filestat[stat.ST_GID]
  40. size = filestat[stat.ST_SIZE]
  41. mtime = filestat[stat.ST_MTIME]
  42.  
  43. mode_str = ''
  44. mode_str += 'd' if stat.S_ISDIR(mode) else '-'
  45. mode_str += 'r' if mode & stat.S_IRUSR else '-'
  46. mode_str += 'w' if mode & stat.S_IWUSR else '-'
  47. mode_str += 'x' if mode & stat.S_IXUSR else '-'
  48. mode_str += 'r' if mode & stat.S_IRGRP else '-'
  49. mode_str += 'w' if mode & stat.S_IWGRP else '-'
  50. mode_str += 'x' if mode & stat.S_IXGRP else '-'
  51. mode_str += 'r' if mode & stat.S_IROTH else '-'
  52. mode_str += 'w' if mode & stat.S_IWOTH else '-'
  53. mode_str += 'x' if mode & stat.S_IXOTH else '-'
  54.  
  55. ltime = time.localtime(mtime)
  56. time_str = MONTH_NAME[ltime[1]] + ' '
  57. time_str += '%2d ' % ltime[1]
  58.  
  59. if mtime < curr_time - SIX_MONTHS or mtime > curr_time + SIX_MONTHS:
  60. time_str += ' %04d' % ltime[0]
  61. else:
  62. time_str += '%02d:%02d' % (ltime[3], ltime[4])
  63.  
  64. print('%s %d %*d %s %s' % (mode_str, num_links, size_width, size, time_str, filename))
  65.  
  66. for entry in sorted_entries:
  67. filename = entry[0]
  68. filestat = entry[1]
  69. mode = filestat[stat.ST_MODE]
  70. if stat.S_ISDIR(mode):
  71. print()
  72. ls(dir + '/' + filename)
  73.  
  74. ls('.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement