winfsp
安装winfsp,https://winfsp.dev/
fusepy
python安装fusepy
#!/usr/bin/env python3
import os
import stat
from fuse import FUSE, FuseOSError, Operations
class Passthrough(Operations):
def __init__(self, root):
self.root = root
# 辅助函数:将挂载点路径转换为根目录路径
def _full_path(self, partial):
if partial.startswith("/"):
partial = partial[1:]
path = os.path.join(self.root, partial)
return path
# 获取文件或目录的属性
def getattr(self, path, fh=None):
full_path = self._full_path(path)
st = os.lstat(full_path)
return dict((key, getattr(st, key)) for key in ('st_atime', 'st_ctime',
'st_gid', 'st_mode', 'st_mtime', 'st_nlink', 'st_size', 'st_uid'))
# 读取目录内容
def readdir(self, path, fh):
full_path = self._full_path(path)
dirents = ['.', '..']
if os.path.isdir(full_path):
dirents.extend(os.listdir(full_path))
for r in dirents:
yield r
# 打开文件
def open(self, path, flags):
full_path = self._full_path(path)
return os.open(full_path, flags)
# 读取文件内容
def read(self, path, length, offset, fh):
os.lseek(fh, offset, os.SEEK_SET)
return os.read(fh, length)
def main(mountpoint, root):
FUSE(Passthrough(root), mountpoint, nothreads=True, foreground=True)
if __name__ == '__main__':
import sys
if len(sys.argv) != 3:
print('usage: %s <mountpoint> <root>' % sys.argv[0])
sys.exit(1)
main(sys.argv[1], sys.argv[2])
pyinstaller --onefile mount.py
打包成mount命令
mount z: d: