我遵循这个教程有关保险丝。你知道吗
https://www.stavros.io/posts/python-fuse-filesystem/
在上面提到的教程中,它只是将所有内容从指定目录复制到装载点。我正试着调整一下。我将针对leveldb中的每个键创建文件,而不是从一个目录复制到moint点。这些文件的内容将是相应键的值。到目前为止,我只尝试更改readdir()的主体。你知道吗
def readdir(self, path, fh):
print "inside readdir"
self.db = plyvel.DB('/tmp/testdb/', create_if_missing=True)
return self.db.iterator(start=b'0'); #Statement which causes error
以下是回溯:
inside readdir
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/fuse.py", line 495, in _wrapper
return func(*args, **kwargs) or 0
File "/usr/local/lib/python2.7/dist-packages/fuse.py", line 698, in readdir
name, attrs, offset = item
ValueError: need more than 2 values to unpack
我不确定我做错了什么。如果我使用print语句在原始代码中打印r,我只需逐个获取所有文件名。原始代码如下:
def readdir(self, path, fh):
full_path = self._full_path(path)
dirents = ['.', '..']
if os.path.isdir(full_path):
dirents.extend(os.listdir(full_path))
for r in dirents:
print r
yield r
我相信我返回的迭代器缺少偏移部分。如果是这样,那么如何将其附加到迭代器? 我用的是fusepy和plyvel 如何运行: 你应该安装plyvel。在tmp文件夹中创建一个虚拟数据库。添加0到100之间的键和相应的伪值。复制粘贴原始代码并将readdir()的主体更改为我提到的主体。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐