如何在Python中创建ramdisk?
我想在Python中创建一个内存盘(ramdisk)。我希望这个功能能够在不同的操作系统上都能用,比如Windows XP到7、Mac和Linux。我希望能像使用普通硬盘一样读写这个内存盘,最好能有一个驱动器字母或者路径。
我想这样做的原因是为了测试一个脚本,这个脚本会创建一个特定结构的目录。我想把这个目录完全放在内存盘里,这样在测试结束后我可以确保它会被完全删除。我考虑过使用Python的tempfile
模块,但如果测试中途被停止,那个目录可能不会被删除。我希望能确保即使在测试进行中有人突然关掉电脑,这个目录也一定会被删除。
4 个回答
一种选择是对os
模块中使用的方法,以及内置的open
和file
方法进行修改,让它们写入StringIO
文件,而不是直接写入硬盘。显然,这种替换只应该在测试的模块中进行;
因为处理文件和文件夹的方式非常底层,并且依赖于操作系统,所以我怀疑你想要的那种东西是否存在(或者说是否可能)。你最好的办法可能是实现一套“虚拟”的文件系统功能、类和方法,这些可以用来跟踪创建的文件和文件夹结构以及它们的内容。
在这种模拟中,调用的函数需要和你应用中使用的各种Python标准库和模块中的函数有相同的格式,并且返回相同的值。
我觉得这可能没有听起来那么复杂——模拟标准的Python文件系统接口——这要看你实际使用了多少,因为你不一定需要完全模仿所有的功能。而且,如果用纯Python™编写的话,它也会很方便移植和维护,后续的改进也会比较简单。
那你觉得 PyFilesystem 怎么样呢?
https://docs.pyfilesystem.org/en/latest/reference/memoryfs.html
https://docs.pyfilesystem.org/en/latest/reference/tempfs.html
不过有个缺点,就是你需要通过 PyFilesystem 的接口来访问文件系统,但你也可以用 PyFilesystem 访问真实的文件系统。