我试图从某个存储库中获取数据,并尝试显示任何文件的文件内容,例如在存储库目录中使用cat <filename>
。
def read(self, path, size, offset, fh=None):
file_content = ''
path_ele = path.split('/')
print('***[read]')
print(path)
if path.endswith('/') or path[1] == '.':
print('ok')
return file_content
else:
path = path.split('/')
repo_name = path[-2]
file_name = path[-1]
print(repo_name, file_name)
for item in self.user.get_user().get_repos():
if item.name == repo_name:
files = item.get_dir_contents('/')
for file_ in files:
if file_name == file_.name:
file_content = item.get_file_contents(file_name).decoded_content
print(len(file_content.decode('utf-8')))
print(type(file_content.decode('utf-8')))
return file_content
当我在存储库目录中的文件上执行cat
时,它会给出由以下行引起的错误
assert retsize <= size, 'actual amount read %d greater than expected %d' % (retsize, size)
在fusepy
s阅读功能link。
你不尊重read
的所有参数,即size
和offset
。某些程序或命令一次只读取文件块。这意味着他们希望能够从位置y字节(size
)开始读取x个字节(offset
)。因此,您的代码中的主要错误是您只是为每次读取操作返回整个文件。
修复可以从返回file_content[offset:(offset+size)]
等微不足道的东西开始。当我说“开始”时,你必须记住,如果offset
或size
(对于给定的offset
)传递到你的read
函数超出范围,你也必须提出正确的错误。