2017-09-14 6 views
1

Pythonでosエラーをキャッチできるかどうかは誰にも分かりません。ネットワークドライブをマッピングするスクリプトを作成しています。 存在しないパスの名前をエンドユーザーが入力すると、エラーが表示されず、問題が発生する可能性があります。 pycharm IDEとともに、Pythonバージョン3.6のサブプロセスモジュールを使用しています。 存在しない場所にマップすると、次のエラーが表示されます。「システムエラー53が発生しました。ネットワークパスが見つかりませんでした」サブプロセスでosエラーをキャッチできません

最後に、OSError、Exception、およびBaseExceptionを使用してエラーをキャッチしようとしました。私が使用したそれぞれはエラーメッセージを返さない。

以下は、実行しているスクリプトの例です。

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

何のpython Excpetionが提起されていないためです。 "システムエラー53が発生しました。ネットワークパスが見つかりませんでした" - Windowsエラー、Pythonではない –

+0

'subprocess.check_call'を使用すると、プロセスの戻りコードも渡す必要があります。 @YaroslavSurzhikovは正しいですが、これによってPythonエラーは発生しません。なぜそれを捕まえることができないのですか? –

答えて

0

のPython»ドキュメント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 
関連する問題