создание временного файла в python с помощью FUSE

Я пытаюсь написать программу с использованием python-fuse, но не могу записать файл. мой file_class выглядит так

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] Я нашел проблему, у меня не было открытого метода, но даже в этом случае я в конце концов убрал file_class для реализации методов в основном классе FUSE, потому что он работает лучше


person Nick Beeuwsaert    schedule 27.06.2011    source источник
comment
Рад, что вы нашли проблему. Не стесняйтесь написать ответ на свой вопрос и отметить его галочкой (чтобы этот вопрос не выглядел без ответа). Я думаю, вам нужно подождать 24 часа, прежде чем вы сможете ответить на свой вопрос, поэтому вы сможете вернуться и сделать это примерно через 5 часов.   -  person mgiuca    schedule 28.06.2011


Ответы (1)


В конце концов я обнаружил, что проблема заключалась в том, что я не создал метод open() или create() в своем файловом классе, но в конце концов я решил реализовать все методы в основном классе FUSE, потому что file_class не казался работать на меня

person Nick Beeuwsaert    schedule 28.06.2011