def _insert_sorted(self, item: os.DirEntry, sort_by: SortBy) -> None:
"""Internal method to insert every scanned item into the local `_items`
list on-the-fly by the given `sort_by` parameter.
:param item: DirEntry object from `_iter_items()` async iteration
within the async parallel scanning.
:type item: posix.DirEntry
:param sort_by: SortBy enum attribute
:type sort_by: SortBy
:rtype: None
"""
attrs = self._get_attributes(item)
# It is an empty folder, grab folder timestamps
if attrs['atime'] == 0 and attrs['mtime'] == 0 and attrs['ctime'] == 0:
stat = item.stat(follow_symlinks=False)
attrs['atime'] = int(stat.st_atime)
attrs['mtime'] = int(stat.st_mtime)
attrs['ctime'] = int(stat.st_ctime)
summary = {'name': os.path.relpath(item.path, self._root),
'size': attrs['size'],
'depth': attrs['depth'],
'num_of_files': attrs['num_of_files'],
'atime': attrs['atime'],
'mtime': attrs['mtime'],
'ctime': attrs['ctime']}
index = self._find_index(summary, sort_by)
self._total_size += summary['size']
self._items_len += 1
self._items.insert(index, summary)
评论列表
文章目录