使用python shutil在Windows上的Dokan Fuse中复制文件时遇到问题

时间:2019-05-13 09:11:22

标签: python fuse dokan

当前,我正在使用Dokan在Windows上包装文件系统。

从Python 3.7开始,os.path实现了一个samefile函数,其实现如下:

# Are two stat buffers (obtained from stat, fstat or lstat)
# describing the same file?
def samestat(s1, s2):
    """Test whether two stat buffers reference the same file"""
    return (s1.st_ino == s2.st_ino and
            s1.st_dev == s2.st_dev)


# Are two filenames really pointing to the same file?
def samefile(f1, f2):
    """Test whether two pathnames reference the same actual file"""
    s1 = os.stat(f1)
    s2 = os.stat(f2)
    return samestat(s1, s2)

您可以查看代码详细信息here

在那种情况下,我们需要确保两个文件不相同st_ino,也不相同st_dev,以便从一个文件复制到另一个文件。

doc for python中,属性st_ino是Windows上的文件索引(如果非零)。

以上所有操作在普通文件系统上都可以,但在Dokan上效果不佳。

当我使用Dokan封装文件系统时(在Linux上使用FUSE),use_ino配置不在Dokan的讨论范围之内,但是我找不到任何替代品。

>> os.stat("D:\\test\\data\\test\\test.xml")
os.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=457, st_atime=1555481019, st_mtime=1555481019, st_ctime=1)

st_ino都始终为0。

是Python错误还是我的Dokan实现有问题?

0 个答案:

没有答案