2012-04-21 72 views
1

我正在编写网络文件系统,并且我已经开始尝试了解python-fuse提供的xmp.py。fuse-python xmp.py - 无法创建文件

那么基本上,我通过网络发送所有呼叫,在服务器端执行它,并将结果发送到客户端并将其返回给用户。这些部件工作得很好。

我面临的问题是,xmp.py无法创建文件,因此该问题也出现在我的网络文件系统中。

我遵循的步骤是:

  1. 安装熔断器蟒蛇是:

    sudo apt-get install python-fuse 
    
  2. 然后我去到哪里xmp.py所在的目录:

    cd /usr/share/doc/python-fuse/examples/ 
    
  3. 我用以下命令行参数运行了xmp.py程序已废除

    python xmp.py -o root=/home/user /tmp/fuse 
    

    其中/home/user将被复制或安装在/tmp/fuse

  4. 然后我cd到了/tmp/fuse目录,并设法使一个文件cat,如:

    cd /tmp/fuse 
    cat > temp.txt 
    

    我得到的错误

    bash: temp.txt: Invalid argument 
    

很多闲逛之后,我认为,这是由于功能

def getattr(self, path): 
    return os.lstat("." + path) 

当我做一个cat > temp.txtos.lstat("./temp.txt")被调用,抛出一个错误为未找到该文件/home/user/temp.txt。在此之后,程序卡住了一段时间,并减慢了我的电脑速度。

请帮我弄清楚我做错了什么。

谢谢。

回答

2

我想我已经想通了,我看到的问题是一旦os.lstat("./temp.txt")失败,文件类的__init__方法被调用,然后立即截断被调用,程序返回。

我遵循的一个解决方案是根本不使用文件类,并实现Fuse类'open/create来生成文件。

这种方法适合我。如果有人有更好的建议,请让我知道。我想使用面向对象的方法并使用文件类。