pyfuse 不适用于云中的虚拟文件

问题描述

我正在尝试从云中的文件挂载虚拟驱动器。为此,我在示例 pyfuse 之后使用 passthroughfs.py

我采用的方法之一是def _getattr

def _getattr(self,name):
        # Temporarily commented for testing
        # for attr in ('st_ino','st_mode','st_nlink','st_uid','st_gid',#              'st_rdev','st_size','st_atime_ns','st_mtime_ns',#              'st_ctime_ns'):
        for attr in ('st_ino','st_size'):
            # Code adapted to obtain the attributes
            if attr == 'st_ino':
                attr_value = int(element['id']) # 10 digits
            if attr == 'st_size':
                attr_value = element['size']
            elif attr == 'st_uid':
                attr_value = os.getuid()
            elif attr == 'st_gid':
                attr_value = os.getgid()
            elif attr == 'st_mode':
                if element['isFolder']:
                    # attr_value = (stat.S_IFDIR | 0o644)
                    attr_value = 16893 # Hardcoded temporary
                else:
                    attr_value = (stat.S_IFREG | 0o664)
            setattr(entry,attr,attr_value)

        entry.generation = 0
        entry.entry_timeout = 0
        entry.attr_timeout = 0
        entry.st_blksize = 512
        entry.st_blocks = ((entry.st_size+entry.st_blksize-1) // entry.st_blksize)

        return entry

当我列出 ls -l 挂载目录时,会为每个文件调用 lookup 方法

async def lookup(self,inode_p,name,ctx=None):
    name = fsdecode(name)
    log.debug('lookup for %s in %d',inode_p)
    path = os.path.join(self._inode_to_path(inode_p),name)
    attr = self._getattr(name)
    if name != '.' and name != '..':
        self._add_path(attr.st_ino,path)
    return attr

和控制台显示

ls: you can not access 'test/My movie 1.mkv': File or directory does not exist
ls: you can not access 'test/dirTemp': File or directory does not exist
total 0
d????????? ? ? ? ?            ?  dirTemp
-????????? ? ? ? ?            ? 'My movie 1.mkv'

_getattr 中分配的属性似乎不起作用。有什么想法或建议吗?提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...