2017-09-14 5 views
1

Wer weiß, ob Sie os Fehler in Python fangen können. Ich arbeite an einem Skript, das Netzlaufwerke abbildet. Wenn der Endbenutzer den Namen eines Pfades eingibt, der nicht existiert, wird kein Fehler angezeigt, was zu Problemen führen könnte. Ich benutze das Subprozessmodul, mit Python Version 3.6, zusammen mit der pycharm IDE. Wenn ich auf einen Standort abbilde, der nicht existiert, erhalte ich den folgenden Fehler "Systemfehler 53 ist aufgetreten. Der Netzwerkpfad wurde nicht gefunden."Kann nicht mit Subprocessing os Fehler fangen

Schließlich habe ich versucht, den Fehler mit OSError, Exception und BaseException zu fangen. Jeder, den ich verwendet habe, gibt keine Fehlermeldung zurück.

Hier ist ein Beispiel für das Skript, das ich ausführe.

def StoreInfo(): 
receiving = input("Enter receiving: ") 
try: 
    subprocess.call(r'net use y: \\' + receiving + '\\act\\rto\\transent', shell=True) #timeout=30 
except OSError: 
    #print("An unexpected error:" , sys.exc_info()[0]) 
    print(sending+"'s path does not exit!") 

StoreInfo()

+1

Es ist, weil kein Python Excpetion angehoben wird. "System Fehler 53 ist aufgetreten. Der Netzwerkpfad wurde nicht gefunden" - es ist Windows Fehler, nicht Python –

+0

Wenn Sie 'subprocess.check_call' verwenden, sollte es Ihnen auch den Return-Code des Prozesses geben, die meisten mit 0 für Erfolg und alle beenden andere Zahl, um verschiedene Fehlerbedingungen anzuzeigen, aber @YaroslavSurzhikov ist korrekt, es wird kein Python-Fehler ausgelöst, deshalb können Sie es nicht fangen. –

Antwort

0

Python »Dokumentation Subprocess

try: 
    retcode = call("mycmd" + " myarg", shell=True) 
    if retcode < 0: 
     print >>sys.stderr, "Child was terminated by signal", -retcode 
    else: 
     print >>sys.stderr, "Child returned", retcode 
except OSError as e: 
    print >>sys.stderr, "Execution failed:", e 
Verwandte Themen