我在用PyFilesystem。我正在测试的代码使用open_fs(file_url)创建默认文件系统。当我测试这段代码时,我现在可以传入mem://filepath/filename来使用内存文件系统来运行测试。
但是,为了进行测试,我需要用测试文件填充内存文件系统。有什么办法让我在文件系统上强制使用全局singeton吗?我希望当open_fs在我无法控制的代码中运行时,它会打开我以前创建的文件系统,并用我的测试文件作为种子。
发布于 2019-03-09 15:27:01
这里是PyFilesystem作者。简短的回答是否定的,对于内存文件系统来说,一旦关闭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对象,这是我通常推荐的。
https://stackoverflow.com/questions/55072706
复制相似问题