我想在Python中创建一个ramdisk。我希望能够以跨平台的方式实现这一点,因此它可以在Windows XP到7,Mac和Linux上运行。我希望能够读取/写入ramdisk,就像它是普通驱动器一样,最好带有驱动器号/路径。
我想要的原因是为脚本编写测试,以创建具有特定结构的目录。我想在ramdisk中完全创建目录,所以我确定在测试结束后它会被完全删除。我考虑使用Python的tempfile
,但如果测试将在中间停止,则可能不会删除目录。即使有人在测试过程中拔掉计算机上的插头,我也要完全确定它已被删除。
答案 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
的内置file
和StringIO
}而不是磁盘。显然,这种替换只应出现在被测模块上;
答案 3 :(得分:-6)
请阅读:
http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile
“返回一个类似文件的对象 用作临时存储区域。该 使用mkstemp()创建文件。它 将尽快销毁 关闭(包括隐含关闭 当对象是垃圾时 收集)。“
这一切都是为你处理的。什么都不做,它已经有效了。