Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyFilesystem是否可以强制使文件系统成为一个单独的系统?_Python_Pyfilesystem - Fatal编程技术网

Python PyFilesystem是否可以强制使文件系统成为一个单独的系统?

Python PyFilesystem是否可以强制使文件系统成为一个单独的系统?,python,pyfilesystem,Python,Pyfilesystem,我正在使用。我正在测试的代码使用open\u fs(file\u url)创建一个默认文件系统。当我测试这段代码时,我现在可以通过mem://filepath/filename使用内存文件系统运行测试 但是,为了进行测试,我需要用测试文件填充内存文件系统。我有没有办法在文件系统上强制使用全局Sington?我希望当open\u fs在我无法控制的代码中运行时,它会打开我以前创建并与测试文件一起播种的文件系统。PyFilesystem作者。简短的回答是否定的,对于内存文件系统,一旦关闭FS对象,内

我正在使用。我正在测试的代码使用
open\u fs(file\u url)
创建一个默认文件系统。当我测试这段代码时,我现在可以通过
mem://filepath/filename
使用内存文件系统运行测试


但是,为了进行测试,我需要用测试文件填充内存文件系统。我有没有办法在文件系统上强制使用全局Sington?我希望当
open\u fs
在我无法控制的代码中运行时,它会打开我以前创建并与测试文件一起播种的文件系统。

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对象,这是我通常建议的。

您可以对模块进行monkey补丁,以便在打开内存文件系统时,它会首先检查是否已经这样做,如果是这样,返回以前返回的内容,而不是创建另一个实例。见问题。如果你做一些研究,有很多方法可以在Python中实现单例。代码在我的浏览器中显示不正确,但您应该能够找到它。这是另一个。谢谢你的回复!在我的例子中,我可以简单地传入一个文件系统对象。然而,这个问题的动机是,它似乎与PyFilesystem“简单”的目的背道而驰,特别是对于单元测试中的模拟。要确保所有使用文件的代码都接受并跟踪文件系统对象,感觉就像是一堆额外的内务管理。