Fehlerauswertung bei Trennen Netzwerkverbindung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
RolandKM
User
Beiträge: 25
Registriert: Montag 21. Dezember 2020, 10:20

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) ?
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1022
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
RolandKM
User
Beiträge: 25
Registriert: Montag 21. Dezember 2020, 10:20

Vielen Dank für die Tipps, jetzt läuft's.
Antworten