46

我想在 Python 中创建一个 ramdisk。我希望能够以跨平台的方式执行此操作,因此它可以在 Windows XP-to-7、Mac 和 Linux 上运行。我希望能够像普通驱动器一样读取/写入 ramdisk,最好使用驱动器号/路径。

我想要这个的原因是为创建具有特定结构的目录的脚本编写测试。我想完全在 ramdisk 中创建目录,所以我会确保在测试结束后它会被完全删除。我考虑过使用 Python 的tempfile,但如果测试将在中间停止,则目录可能不会被删除。我想完全确定它是否被删除,即使有人在测试过程中拔掉了电脑上的插头。

4

4 回答 4

19

PyFilesystem怎么样?

https://docs.pyfilesystem.org/en/latest/reference/memoryfs.html

https://docs.pyfilesystem.org/en/latest/reference/tempfs.html

缺点是您必须使用 PyFilesystem API 访问文件系统,但您也可以使用 PyFilesystem 访问真正的 fs。

于 2010-12-04T14:26:07.907 回答
4

因为文件和目录处理是如此低级并且依赖于操作系统,所以我怀疑你想要的东西是否存在(甚至可能)。您最好的选择可能是实现一组类似于“虚拟”文件系统的函数、类和方法,以跟踪创建的文件和目录层次结构及其内容。

这种模拟中的可调用对象需要与应用程序使用的各种 Python 标准内置函数和模块中的对应对象具有相同的签名并返回相同的值。

我怀疑这可能不像听起来那么工作——模拟标准的 Python 文件系统接口——这取决于你实际使用了多少,因为你不一定要模仿所有这些。此外,如果用Pure Python ™ 编写,它也将是可移植的并且易于维护和增强。

于 2010-12-04T01:00:40.303 回答
1

一种选择可能是注入(猴子补丁)os模块中使用的方法的修改版本以及内置函数open,并且file写入StringIO文件而不是磁盘。显然,这种替换应该只发生在被测试的模块上;

于 2010-12-04T01:09:55.463 回答
-7

请阅读这个:

http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile

“返回一个可用作临时存储区域的类文件对象。该文件是使用 mkstemp() 创建的。它会在关闭时立即销毁(包括对象被垃圾回收时的隐式关闭)。”

这一切都为你处理。什么都不做,它已经工作了。

于 2010-12-04T12:36:39.470 回答