可以强制PyFilesystem使文件系统单例吗?

时间:2019-03-09 00:13:59

标签: python pyfilesystem

我正在使用PyFilesystem。我正在测试的代码使用open_fs(file_url)创建了一个默认文件系统。测试此代码时,我现在可以传入mem://filepath/filename来使用内存文件系统运行测试。

但是对于测试,我需要用测试文件填充内存文件系统。有没有办法让我在文件系统上强制全局设置?我希望当open_fs在我无法控制的代码中运行时,它将打开以前创建的相同文件系统,并以我的测试文件作为种子。

1 个答案:

答案 0 :(得分:1)

PyFilesystem作者在此处。简短的回答是 no ,对于内存文件系统,一旦关闭FS对象,内存就会被丢弃。仅当基础存储机制是持久性的时,文件系统才会持久化。

稍长一点的答案是,您可以使用TempFS的子目录来创建持久文件系统。

# Create a temporary filesystem at module scope
temp_fs = open_fs('temp://')

# Acquire new persistent temporary directory
# (this is just a path you can pass to open_fs)
# If you open this multiple times, the data will persist
new_dir = temp_fs.makedir('foo').getsyspath()

# Close temporary filesystem, to delete all directories
temp_fs.close()

这应该为您提供所描述的语义。

如果您正在使用的项目正在使用FS url打开和关闭文件系统,并且仍然希望数据在那里,那么它将与没有持久存储支持的文件系统一起中断。也许您可以向作者建议,他们将FS对象保留所需的时间,这是我通常所建议的。