FUSE:ValueError:要解压缩需要2个以上的值

时间:2018-03-20 13:43:21

标签: python ubuntu fuse

我正在关注与FUSE相关的本教程。

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()的主体更改为我提到的那个。

0 个答案:

没有答案