在python中读取Fuse的实现没有按预期返回,cat: :糟糕的地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中读取Fuse的实现没有按预期返回,cat: :糟糕的地址相关的知识,希望对你有一定的参考价值。
我试图从某个存储库中获取数据,并尝试显示任何文件的文件内容,例如在存储库目录中使用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
函数超出范围,你也必须提出正确的错误。
以上是关于在python中读取Fuse的实现没有按预期返回,cat: :糟糕的地址的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中读取文件:for 和 while 嵌套循环没有按预期工作:串行?
做了一个练习游戏,但它没有按预期读取“While”功能[重复]
Python 中 Perl 的 (<>) 等价物是啥?文件输入没有按预期工作