For example, I've got a file with the following path:
You may either call the
mount command and parse its output to find the longest common prefix with your path, or use the
stat system call to get the device a file resides on and go up the tree until you get to a different device.
stat may be used as follows (untested and may have to be extended to handle symlinks and exotic stuff like union mounts):
def find_mount_point(path): path = os.path.abspath(path) orig_dev = os.stat(path).st_dev while path != '/': dir = os.path.dirname(path) if os.stat(dir).st_dev != orig_dev: # we crossed the device border break path = dir return path
Edit: I didn't know about
os.path.ismount until just now. This simplifies things greatly.
def find_mount_point(path): path = os.path.abspath(path) while not os.path.ismount(path): path = os.path.dirname(path) return path