fs.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import os
  2. class Filesystem(object):
  3. def __init__(self, app):
  4. self.path = os.path.abspath(app.config.get('NOVA_ROOT_PATH', '.'))
  5. def get_entries(self, dataset, path):
  6. path = path if path else '.'
  7. path = os.path.join(self.path, dataset.path, path)
  8. return (os.path.join(path, e) for e in os.listdir(path))
  9. def get_files(self, dataset, path):
  10. return [(os.path.basename(e), os.stat(e).st_size) for e in self.get_entries(dataset, path) if not os.path.isdir(e)]
  11. def get_dirs(self, dataset, path):
  12. return [os.path.basename(e) for e in self.get_entries(dataset, path) if os.path.isdir(e)]
  13. def get_statistics(self, datasets):
  14. num_files = 0
  15. total_size = 0
  16. for dataset in datasets:
  17. for root, dirs, files in os.walk(os.path.join(self.path, dataset.path)):
  18. num_files += len(files)
  19. for filename in files:
  20. path = os.path.join(root, filename)
  21. total_size += os.stat(path).st_size
  22. return num_files, total_size
  23. def path_of(self, dataset):
  24. return os.path.join(self.path, dataset.path)