保险丝:值错误:需要2个以上的值才能取消

2024-06-16 10:09:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循这个教程有关保险丝。你知道吗

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()的主体更改为我提到的主体。你知道吗


Tags: 文件path代码inself目录内容教程