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')
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…