如何在Python中创建虚拟磁盘?

问题描述 投票:38回答:4

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

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

python unit-testing cross-platform temporary-files ramdisk
4个回答
15
投票

PyFilesystem如何?

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

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

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


4
投票

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

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

我怀疑这可能听起来不尽如人意-模拟标准的Python文件系统接口-取决于您实际使用的接口数量,因为您不必完全模仿所有接口。同样,如果使用Pure Python™编写,它也将是可移植的,并且易于维护和增强。


1
投票

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


-6
投票

请阅读此:

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

“返回类似文件的对象,该对象可以是用作临时存储区。的文件是使用mkstemp()创建的。它将一经销毁已关闭(包括隐式关闭当对象是垃圾时收集)。“

全部为您处理。什么也不做,已经可以了。

© www.soinside.com 2019 - 2024. All rights reserved.