Lösung 1:
Ich würde einen Blick auf os.path.ismount()
werfen .
Lösung 2:
Für eine endgültige Antwort auf etwas, das nur der Kernel sicher weiß, fragen Sie den Kernel:
cat /proc/mounts
Diese Datei kann mit beliebigen Tools gelesen / analysiert werden, als wäre es eine normale Datei. Einschließlich Python. Quick-n-Dirty-Beispiel:
#!/usr/bin/python
d = {}
for l in file('/proc/mounts'):
if l[0] == '/':
l = l.split()
d[l[0]] = l[1]
import pprint
pprint.pprint(d)
Lösung 3:
Der einfachste Weg zur Überprüfung ist der Aufruf von mount
über subprocess
und schau ob es dort auftaucht. Verwenden Sie für zusätzliches Guthaben os.readlink()
zum Inhalt von /dev/disk/by-*
herauszufinden, um welches Gerät es sich handelt.
Lösung 4:
Bonusantwort. Wenn das externe Gerät nicht gemountet ist, werden die Daten in die Root-Partition unter Pfad /external-backup
geschrieben . Wenn ein externes Gerät gemountet wird, sind die Daten auf der Root-Partition immer noch vorhanden, aber sie sind nicht erreichbar, weil /external-backup
zeigt jetzt auf externes Gerät.
Lösung 5:
Alte Frage, aber ich dachte, ich würde trotzdem meine Lösung (basierend auf der Antwort von Dennis Williamson und Ignacio Vazquez-Abrams) beitragen. Da ich es in einer Nicht-Linux-Umgebung verwende, um Remote-Verzeichnisse zu überprüfen, die gemountet werden, /proc und mtab kann nicht verwendet werden und es wurden keine zusätzlichen Prüfungen implementiert:
def is_mounted(special, directory):
search_prefix = '{} on {}'.format(special, directory.rstrip('/'))
if os.path.ismount(directory):
mounts = subprocess.check_output(['mount']).split('\n')
for line in mounts:
if line[:len(search_prefix)] == search_prefix:
return True;
return False
Verbesserungen willkommen!