How do I mount a filesystem using Python?

前端 未结 10 1952
鱼传尺愫
鱼传尺愫 2020-12-16 09:41

I\'m sure this is a easy question, my Google-fu is obviously failing me.

How do I mount a filesystem using Python, the equivalent of running the shell command

10条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-16 10:08

    As others have pointed out, there is no built-in mount function. However, it is easy to create one using ctypes, and this is a bit lighter weight and more reliable than using a shell command.

    Here's an example:

    import ctypes
    import ctypes.util
    import os
    
    libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True)
    libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p)
    
    def mount(source, target, fs, options=''):
      ret = libc.mount(source.encode(), target.encode(), fs.encode(), 0, options.encode())
      if ret < 0:
        errno = ctypes.get_errno()
        raise OSError(errno, f"Error mounting {source} ({fs}) on {target} with options '{options}': {os.strerror(errno)}")
    
    mount('/dev/sdb1', '/mnt', 'ext4', 'rw')
    

提交回复
热议问题