创建 os.DirEntry

Dim*_*nek 4 scandir python-3.x

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

我想将其用于两个目的:

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

Ben*_*oyt 5

是的,os.DirEntry是一个不打算实例化的低级类。例如,对于测试和事物,您可以创建一个模拟PseudoDirEntry您想要的事物的模拟类(取自我在这里写的另一个答案):

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
Run Code Online (Sandbox Code Playgroud)


小智 5

更简单:

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)
Run Code Online (Sandbox Code Playgroud)


Dan*_*den 4

在 Python 3.5 中 os.DirEntry 尚未公开。

详细信息:https://bugs.python.org/issue27038

Python 3.6 公开了os.DirEntry类型,但无法实例化。

在 Python 3.5 上,DirEntry 对象上的 type() 返回 posix.DirEntry