How do I mount a filesystem using Python?
Another option would be to use the fairly new sh module. According to its documentation it provides fluent integration with Shell commands from within Python.
I am trying it out now and it looks very promising.
from sh import mount
mount("/dev/", "/mnt/test", "-t ext4")
Also take a look at baking, which allows you to quickly abstract away commands in new functions.
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')