【问题标题】:fuse-python xmp.py - Not able to create a filefuse-python xmp.py - 无法创建文件
【发布时间】:2013-02-28 01:22:30
【问题描述】:

我正在编写一个网络文件系统,我开始尝试理解 python-fuse 提供的 xmp.py。

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

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

我遵循的步骤是:

  1. 安装fuse-python:

    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.txt 时,会调用os.lstat("./temp.txt") 并抛出错误,因为找不到文件/home/user/temp.txt。在此之后,程序会卡住一段时间并降低我的计算机速度。

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

谢谢。

【问题讨论】:

    标签: python filesystems fuse


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 2015-06-17
      • 2018-04-18
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多