在Python中使用FUSE创建临时文件
我正在尝试用python-fuse写一个程序,但我在文件写入方面遇到了问题。我的文件类看起来是这样的:
class FuseFile(object):
def __init__(self, path, flags, *mode):
debug(path)
#debug(mode);
self.file = tempfile.TemporaryFile(*mode);
self.fd = self.file.fileno()
self.path = path
def write(self, buf, offset):
head, tail = os.path.split(self.path)
self.file.seek(offset);
self.file.write(buf);
return len(buf)
def read(self, length, offset):
file = apiCall("readfile",{"file":self.path}).read();
slen = len(file)
if length < slen:
if offset + size > slen:
size = slen - offset
buf = file[offset:offset+size]
else:
buf = ''
return file # I don't know if this buff stuff is necesarry...
def ftruncate(self, len):
self.file.truncate(len);
def release(self, flags):
self.file.close()
def flush(self):
self._fflush()
def fsync(self, isfsyncfile):
self._fflush()
if isfsyncfile and hasattr(os, 'fdatasync'):
os.fdatasync(self.fd)
else:
os.fsync(self.fd)
def _fflush(self):
if 'w' in self.file.mode or 'a' in self.file.mode:
self.file.flush()
但是当我试着在像VIM这样的编辑器中编辑文件时,我遇到了这个问题:
"mnt/stuff.txt" E514: write error (file system full?)
WARNING: Original file may be lost or damaged
don't quit the editor until the file is successfully written!
[EDIT]
我找到了问题所在,我没有实现一个打开文件的方法,不过即便如此,我最终还是把文件类去掉了,直接在主FUSE类中实现这些方法,因为这样似乎效果更好。
1 个回答
2
我最后发现问题出在我没有在我的文件类里创建 open() 或 create() 这两个方法。不过最后我决定把所有的方法都放在主 FUSE 类里,因为文件类对我来说似乎不太好用。