code: def from_disk(self, resource_list=None, paths=None):
          
          num = 0
          # Either use resource_list passed in or make a new one
          if (resource_list is None):
              resource_list = ResourceList()
          # Compile exclude pattern matches
          self.compile_excludes()
          # Work out start paths from map if not explicitly specified
          if (paths is None):
              paths = []
              for map in self.mapper.mappings:
                  paths.append(map.dst_path)
          # Set start time unless already set (perhaps because building in
          # chunks)
          if (resource_list.md_at is None):
              resource_list.md_at = datetime_to_str()
          # Run for each map in the mappings
          for path in paths:
              self.logger.info("Scanning disk from %s" % (path))
              self.from_disk_add_path(path=path, resource_list=resource_list)
          # Set end time
          resource_list.md_completed = datetime_to_str()
          return(resource_list)
docs: Create or extend resource_list with resources from disk scan.
  
          Assumes very simple disk path to URL mapping (in self.mapping): chop
          path and replace with url_path. Returns the new or extended ResourceList
          object.
  
          If a resource_list is specified then items are added to that rather
          than creating a new one.
  
          If paths is specified then these are used instead of the set
          of local paths in self.mapping.
  
          Example usage with mapping start paths:
  
          mapper=Mapper('http://example.org/path','/path/to/files')
          rlb = ResourceListBuilder(mapper=mapper)
          m = rlb.from_disk()
  
          Example usage with explicit paths:
  
          mapper=Mapper('http://example.org/path','/path/to/files')
          rlb = ResourceListBuilder(mapper=mapper)
          m = rlb.from_disk(paths=['/path/to/files/a','/path/to/files/b'])