def _scandir(self, path, namespaces=None):
self.check()
namespaces = namespaces or ()
_path = self.validatepath(path)
sys_path = self._to_sys_path(_path)
with convert_os_errors('scandir', path, directory=True):
for dir_entry in scandir(sys_path):
info = {
"basic": {
"name": dir_entry.name,
"is_dir": dir_entry.is_dir()
}
}
if 'details' in namespaces:
stat_result = dir_entry.stat()
info['details'] = \
self._make_details_from_stat(stat_result)
if 'stat' in namespaces:
stat_result = dir_entry.stat()
info['stat'] = {
k: getattr(stat_result, k)
for k in dir(stat_result) if k.startswith('st_')
}
if 'lstat' in namespaces:
lstat_result = dir_entry.stat(follow_symlinks=False)
info['lstat'] = {
k: getattr(lstat_result, k)
for k in dir(lstat_result) if k.startswith('st_')
}
if 'link' in namespaces:
info['link'] = self._make_link_info(
os.path.join(sys_path, dir_entry.name)
)
if 'access' in namespaces:
stat_result = dir_entry.stat()
info['access'] =\
self._make_access_from_stat(stat_result)
yield Info(info)
评论列表
文章目录