如何在Python中创建ramdisk?

时间:2010-12-04 00:06:07

标签: python unit-testing cross-platform temporary-files ramdisk

我想在Python中创建一个ramdisk。我希望能够以跨平台的方式实现这一点,因此它可以在Windows XP到7,Mac和Linux上运行。我希望能够读取/写入ramdisk,就像它是普通驱动器一样,最好带有驱动器号/路径。

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

4 个答案:

答案 0 :(得分:14)

PyFilesystem怎么样?

http://docs.pyfilesystem.org/en/latest/memoryfs.html#module-fs.memoryfs

http://docs.pyfilesystem.org/en/latest/tempfs.html#module-fs.tempfs

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

答案 1 :(得分:4)

因为文件和目录处理是如此低级别和操作系统相关,我怀疑你想要什么(甚至可能)。您最好的选择可能是实现一个类似于文件系统的“虚拟”系统函数,类和方法,以跟踪创建的文件和目录层次结构及其内容。

此类仿真中的Callables需要具有相同的签名,并返回与应用程序使用的各种Python标准内置函数和模块中的对应项相同的值。

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

答案 2 :(得分:1)

一个选项可能是注入(猴子补丁)os模块中使用的方法的修改版本以及写入open的内置fileStringIO }而不是磁盘。显然,这种替换只应出现在被测模块上;

答案 3 :(得分:-6)

请阅读:

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

  

“返回一个类似文件的对象   用作临时存储区域。该   使用mkstemp()创建文件。它   将尽快销毁   关闭(包括隐含关闭   当对象是垃圾时   收集)。“

这一切都是为你处理的。什么都不做,它已经有效了。