创建 os.DirEntry

Create os.DirEntry

除了列出包含目录之外,是否有人可以创建 os.DirEntry 对象?

我想将其用于两个目的:

  1. 测试
  2. API同时查询container和contained

在Python3.5os.DirEntry还未公开

详情:https://bugs.python.org/issue27038

Python 3.6暴露了os.DirEntry类型,但是无法实例化

On Python 3.5 DirEntry 对象上的 type() returns posix.DirEntry

是的,os.DirEntry 是一个低级别的 class,不打算实例化。对于测试和其他事情,您可以创建一个模仿您想要的东西的模拟 PseudoDirEntry class,例如(取自 another answer I wrote here):

class PseudoDirEntry:
    def __init__(self, name, path, is_dir, stat):
        self.name = name
        self.path = path
        self._is_dir = is_dir
        self._stat = stat

    def is_dir(self):
        return self._is_dir

    def stat(self):
        return self._stat

更简单:

class PseudoDirEntry:
   def __init__(self, path):
      import os, os.path
      self.path = os.path.realpath(path)
      self.name = os.path.basename(self.path)
      self.is_dir = os.path.isdir(self.path)
      self.stat = lambda: os.stat(self.path)