Seite 1 von 1

Fehlerauswertung bei Trennen Netzwerkverbindung

Verfasst: Freitag 15. Oktober 2021, 09:18
von RolandKM
Hallo zusammen,

ich möchte eine Netzwerkverbindung (Laufwerk S) trennen, das klappt ohne Probleme mit

Code: Alles auswählen

def button_A32():
    myprocess = subprocess.Popen('net use S: /delete')
Ich komme mit der Fehlerauswertung nicht klar. Wie kann ich feststellen, dass diese Netzwerkverbindung nicht existiert=Fehlermeldung (einfache messagebox reicht) ?

Re: Fehlerauswertung bei Trennen Netzwerkverbindung

Verfasst: Freitag 15. Oktober 2021, 10:17
von Sirius3
Das Argument sollte eine Liste sein, und statt Popen benutzt man hier run:

Code: Alles auswählen

subprocess.run(["net", "use", "S:", "/delete"], check=True)
So bekommst Du bei einem Fehler eine Exception.
my-Präfixe in Variablennamen sind überflüssig, weil sie nichts zum Verständnis beitragen.

Re: Fehlerauswertung bei Trennen Netzwerkverbindung

Verfasst: Freitag 15. Oktober 2021, 10:21
von DeaD_EyE
Ich würde es so machen:

Code: Alles auswählen

import subprocess


def umount_share(drive_letter: str) -> bool:
    """
    Umount drive_letter and return True if success.
    The windows of invoked net command is hidden.
    """
    
    cmd = ["net", "use", f"{drive_letter.upper()}:", "/delete"]
    startup_info = subprocess.STARTUPINFO()
    startup_info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    
    proc = subprocess.run(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, startupinfo=startup_info)
    
    return proc.returncode == 0



print(umount_share("x"))

Anmerkung zu check=True: Exception abfangen

Re: Fehlerauswertung bei Trennen Netzwerkverbindung

Verfasst: Freitag 15. Oktober 2021, 10:58
von RolandKM
Vielen Dank für die Tipps, jetzt läuft's.