创建 os.DirEntry
Create os.DirEntry
除了列出包含目录之外,是否有人可以创建 os.DirEntry
对象?
我想将其用于两个目的:
- 测试
- 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)
除了列出包含目录之外,是否有人可以创建 os.DirEntry
对象?
我想将其用于两个目的:
- 测试
- 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)