如何使用临时文件系统在python中模拟os.walk?

布朗

我正在尝试测试一些使用os.walk的代码。我想创建一个临时的内存文件系统,可以用os.walk返回的示例(空)文件和目录填充。这应该为我节省了模拟os.walk调用以模拟递归的复杂性。

具体来说,我要测试的代码是:

if recursive:
    log.debug("Recursively searching for files under %s" % path)

    for (dir_path, dirs, files) in os.walk(path):
        log.debug("Found %d files in %s: %s" % (len(files), path, files))
        for f in [os.path.join(dir_path, f) for f in files
                  if not re.search(exclude, f)]:
            yield f
else:
    log.debug("Non-recursively searching for files under %s" % path)

    for (dir_path, dirs, files) in os.walk(path):
        log.debug("Found %d files in %s: %s" % (len(files), path, files))
        for f in [os.path.join(dir_path, f) for f in files
                    if not re.search(exclude, f)]:
            yield f

这可能在python中吗?

马丁·彼得斯(Martijn Pieters)

os.walk()os.listdir()和的协助下os.path.islink()编号完全围绕周围构造os.path.isdir()这些本质上是系统调用,因此您必须在系统级别上模拟文件系统除非您想编写一个FUSE插件,否则这将不容易模拟。

所有os.walk()需要的回报是一个元组列表,真的。除非您正在测试操作dirs组件,否则再简单不过了:

with mock.patch('os.walk') as mockwalk:
    mockwalk.return_value = [
        ('/foo', ('bar',), ('baz',)),
        ('/foo/bar', (), ('spam', 'eggs')),
    ]

这将模拟以下目录结构:

/foo
 ├── baz
 └── bar 
     ├── spam
     └── eggs

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中的Levy Walk模拟

来自分类Dev

Python os.walk()失败

来自分类Dev

Python os.walk()方法

来自分类Dev

如何使用os.walk获得的Python中的natsort对文件夹名称进行排序?

来自分类Dev

如何使用os.walk查找文件的路径?

来自分类Dev

如何使用os.walk()重命名文件?

来自分类Dev

Python os.walk,处理子目录中的文件

来自分类Dev

使用os.walk无法从列表中打开文件

来自分类Dev

如何使用os.walk()python计算目录的大小?

来自分类Dev

Python error os.walk IOError

来自分类Dev

Python 3 OS Walk Unicode异常

来自分类Dev

遍历Python的os.walk()混乱

来自分类Dev

Python - recursive directory hit with os.walk()

来自分类Dev

Python错误os.walk IOError

来自分类Dev

Python os.walk和符号链接

来自分类Dev

遍历Python的os.walk()混乱

来自分类Dev

使用os.walk获取符号链接

来自分类Dev

使用os.walk()检索特定目录

来自分类Dev

无法使用os.walk解析路径

来自分类Dev

如果临时文件存在于Ubuntu OS中,如何清除(删除)临时文件?

来自分类Dev

如何使用Python os walk获取子文件夹和文件夹的数量?

来自分类Dev

使用python和os.walk()重命名子文件夹中的文件

来自分类Dev

执行os.walk时出现UnicodeDecodeError

来自分类Dev

未处理stopIteration的os.walk错误

来自分类Dev

未处理stopIteration的os.walk错误

来自分类Dev

合并多个os.walk运行的输出

来自分类Dev

os.walk() 错误 - 解包的值太多

来自分类Dev

如何从os.walk中排除文件扩展名

来自分类Dev

Python os.walk和打开应用程序/文件